{"version":3,"sources":["webpack:///./node_modules/react-hook-form/dist/index.esm.js"],"names":["isCheckBoxInput","element","type","isDateObject","data","Date","isNullOrUndefined","value","isObjectType","isObject","Array","isArray","getNodeParentName","name","substring","search","isNameInFieldArray","names","some","current","compact","filter","Boolean","isUndefined","val","undefined","get","obj","path","defaultValue","result","split","reduce","key","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","omit","source","copy","Object","assign","getProxyFormState","formState","_proxyFormState","localProxyFormState","isRoot","createGetter","prop","defineProperty","isEmptyObject","keys","length","shouldRenderFormState","formStateData","find","convertToArrayPayload","tearDown","_unsubscribe","unsubscribe","useSubscribe","props","_updateSubscription","disabled","subject","subscribe","next","callback","updateSubscriptionProps","skipEarlySubscription","appendErrors","validateAllFieldCriteria","errors","message","types","isKey","test","stringToPath","input","replace","set","object","index","tempPath","lastIndex","newValue","objValue","isNaN","focusFieldBy","fields","fieldsNames","field","_f","ref","focus","refs","isFunction","cloneObject","Set","isPrimitive","deepEqual","object1","object2","getTime","keys1","keys2","val1","includes","val2","getValidationModes","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isBoolean","isHTMLElement","HTMLElement","isMultipleSelect","isRadioInput","isString","isWeb","window","document","live","contains","Subscription","this","tearDowns","push","teardown","Subscriber","observer","subscription","closed","add","Subject","observers","subscriber","unset","updatePath","childObject","slice","baseGet","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","isFileInput","defaultResult","isValid","validResult","getCheckboxValue","options","values","option","checked","map","attributes","getFieldValueAs","valueAsNumber","valueAsDate","setValueAs","NaN","defaultReturn","getRadioValue","previous","getFieldValue","every","files","selectedOptions","setDirtyFields","defaultValues","dirtyFields","parentNode","parentName","setFieldArrayDirtyFields","deepMerge","target","targetValue","sourceValue","_a","unsetEmptyArray","isMessage","isRegex","RegExp","getValidateError","getValueAndMessage","validationData","validateField","async","inputValue","shouldUseNativeValidation","required","maxLength","minLength","min","max","pattern","validate","mount","inputRef","setCustomValidty","reportValidity","setCustomValidity","error","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueNumber","parseFloat","maxLengthOutput","minLengthOutput","patternValue","match","validateError","validationResult","defaultOptions","reValidateMode","shouldFocusError","isWindowUndefined","createFormControl","delayErrorCallback","_options","_formState","isDirty","isValidating","isSubmitted","submitCount","touchedFields","isSubmitting","isSubmitSuccessful","_fields","_defaultValues","_formValues","shouldUnregister","_stateFlags","action","watch","_names","unMount","array","timer","validateFields","_subjects","control","state","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","criteriaMode","isFieldWatched","isBlurEvent","watchAll","has","_updateValid","shouldSkipRender","resolver","executeResolver","executeBuildInValidation","updateErrors","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","fieldValue","isCurrentTouched","shouldRender","isFieldDirty","output","isPreviousFieldTouched","isPreviousFormDirty","_getDirty","isPreviousFieldDirty","updateFieldArrayDirty","shouldRenderByError","fieldState","previousFieldError","shouldUpdateValid","wait","delayError","args","clearTimeout","setTimeout","updatedFormState","context","getResolverOptions","shouldOnlyCheckValid","valid","fieldReference","fieldError","getValues","_getWatch","isGlobal","fieldValues","fieldName","forEach","selectRef","selected","checkboxRef","radioRef","shouldDirty","shouldTouch","shouldValidate","trigger","setValues","fieldKey","handleChange","event","shouldSkipValidation","deps","isTouched","skipValidation","isWatched","onBlur","onChange","parentNodeName","parentField","parentError","fieldNames","executeResolverValidation","Promise","all","shouldFocus","unregister","delete","keepValue","keepError","keepDirty","keepTouched","keepDefaultValue","keepIsValid","register","fieldRef","querySelectorAll","isRadioOrCheckboxFunction","_removeUnmounted","_updateFieldArray","method","shouldSetValues","shouldSetFields","argA","argB","_getFieldArray","handleSubmit","onValid","onInvalid","e","preventDefault","persist","hasNoPromiseError","err","info","setValue","isFieldArray","reset","formValues","keepStateOptions","hasUpdatedFormValues","updatedValues","cloneUpdatedValues","keepDefaultValues","keepValues","closest","keepSubmitCount","keepIsSubmitted","entries","keepErrors","clearErrors","inputName","setError","setFocus","useForm","_formControl","updateFormState"],"mappings":"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","file":"17-810c63441b43eef21ec6.js","sourcesContent":["import * as React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (data) => data 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 getControllerValue = (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].some((current) => getNodeParentName(name) === current);\n\nvar compact = (value) => value.filter(Boolean);\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj, path, defaultValue) => {\r\n if (isObject(obj) && path) {\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 }\r\n return undefined;\r\n};\n\nconst EVENTS = {\r\n BLUR: 'blur',\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\nvar omit = (source, key) => {\r\n const copy = Object.assign({}, source);\r\n delete copy[key];\r\n return copy;\r\n};\n\nconst HookFormContext = React.createContext(null);\r\nconst useFormContext = () => React.useContext(HookFormContext);\r\nconst FormProvider = (props) => (React.createElement(HookFormContext.Provider, { value: omit(props, 'children') }, props.children));\n\nvar getProxyFormState = (formState, _proxyFormState, localProxyFormState, isRoot = true) => {\r\n function createGetter(prop) {\r\n return () => {\r\n if (prop in formState) {\r\n if (_proxyFormState[prop] !== VALIDATION_MODE.all) {\r\n _proxyFormState[prop] = !isRoot || VALIDATION_MODE.all;\r\n }\r\n localProxyFormState && (localProxyFormState[prop] = true);\r\n return formState[prop];\r\n }\r\n return undefined;\r\n };\r\n }\r\n const result = {};\r\n for (const key in formState) {\r\n Object.defineProperty(result, key, {\r\n get: createGetter(key),\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 formState = omit(formStateData, 'name');\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) => !name ||\r\n !signalName ||\r\n convertToArrayPayload(name).some((currentName) => currentName &&\r\n (currentName.startsWith(signalName) ||\r\n signalName.startsWith(currentName)));\n\nconst tearDown = (_unsubscribe) => {\r\n if (_unsubscribe.current) {\r\n _unsubscribe.current.unsubscribe();\r\n _unsubscribe.current = undefined;\r\n }\r\n};\r\nconst updateSubscriptionProps = ({ _unsubscribe, props }) => () => {\r\n if (props.disabled) {\r\n tearDown(_unsubscribe);\r\n }\r\n else if (!_unsubscribe.current) {\r\n _unsubscribe.current = props.subject.subscribe({\r\n next: props.callback,\r\n });\r\n }\r\n};\r\nfunction useSubscribe(props) {\r\n const _unsubscribe = React.useRef();\r\n const _updateSubscription = React.useRef(() => { });\r\n _updateSubscription.current = updateSubscriptionProps({\r\n _unsubscribe,\r\n props,\r\n });\r\n !props.skipEarlySubscription && _updateSubscription.current();\r\n React.useEffect(() => {\r\n _updateSubscription.current();\r\n return () => tearDown(_unsubscribe);\r\n }, []);\r\n}\n\nfunction useFormState(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, disabled, name } = 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 _name.current = name;\r\n useSubscribe({\r\n disabled,\r\n callback: (formState) => shouldSubscribeByName(_name.current, formState.name) &&\r\n shouldRenderFormState(formState, _localProxyFormState.current) &&\r\n updateFormState(Object.assign(Object.assign({}, control._formState), formState)),\r\n subject: control._subjects.state,\r\n });\r\n return getProxyFormState(formState, control._proxyFormState, _localProxyFormState.current, false);\r\n}\n\nfunction useController(props) {\r\n const methods = useFormContext();\r\n const { name, control = methods.control, shouldUnregister } = props;\r\n const [value, setInputStateValue] = React.useState(get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)));\r\n const formState = useFormState({\r\n control: control || methods.control,\r\n name,\r\n });\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n useSubscribe({\r\n subject: control._subjects.control,\r\n callback: (data) => (!data.name || _name.current === data.name) &&\r\n setInputStateValue(get(data.values, _name.current)),\r\n });\r\n const registerProps = control.register(name, Object.assign(Object.assign({}, props.rules), { value }));\r\n const updateMounted = React.useCallback((name, value) => {\r\n const field = get(control._fields, name);\r\n if (field) {\r\n field._f.mount = value;\r\n }\r\n }, [control]);\r\n React.useEffect(() => {\r\n updateMounted(name, true);\r\n return () => {\r\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\r\n if (isNameInFieldArray(control._names.array, name)\r\n ? _shouldUnregisterField && !control._stateFlags.action\r\n : _shouldUnregisterField) {\r\n control.unregister(name);\r\n }\r\n else {\r\n updateMounted(name, false);\r\n }\r\n };\r\n }, [name, control, shouldUnregister, updateMounted]);\r\n return {\r\n field: {\r\n onChange: (event) => {\r\n const value = getControllerValue(event);\r\n setInputStateValue(value);\r\n registerProps.onChange({\r\n target: {\r\n value,\r\n name: name,\r\n },\r\n type: EVENTS.CHANGE,\r\n });\r\n },\r\n onBlur: () => {\r\n registerProps.onBlur({\r\n target: {\r\n value,\r\n name: name,\r\n },\r\n type: EVENTS.BLUR,\r\n });\r\n },\r\n name,\r\n value,\r\n ref: (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 },\r\n },\r\n formState,\r\n fieldState: {\r\n invalid: !!get(formState.errors, name),\r\n isDirty: !!get(formState.dirtyFields, name),\r\n isTouched: !!get(formState.touchedFields, name),\r\n error: get(formState.errors, name),\r\n },\r\n };\r\n}\n\nconst Controller = (props) => props.render(useController(props));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? Object.assign(Object.assign({}, errors[name]), { types: Object.assign(Object.assign({}, (errors[name] && errors[name].types ? errors[name].types : {})), { [type]: message || true }) }) : {};\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 = field._f;\r\n const current = omit(field, '_f');\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(current)) {\r\n focusFieldBy(current, callback);\r\n }\r\n }\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 mapCurrentIds = (values, _fieldIds, keyName) => values.map((value, index) => {\r\n const output = _fieldIds.current[index];\r\n return Object.assign(Object.assign({}, value), (output ? { [keyName]: output[keyName] } : {}));\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 mapIds = (values = [], keyName) => values.map((value) => (Object.assign(Object.assign({}, (value[keyName] ? {} : { [keyName]: generateId() })), value)));\n\nfunction append(data, value) {\r\n return [...convertToArrayPayload(data), ...convertToArrayPayload(value)];\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 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 }\r\n return [];\r\n};\n\nvar omitKeys = (fields, keyName) => fields.map((field = {}) => omit(field, keyName));\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\nvar updateAt = (fieldValues, index, value) => {\r\n fieldValues[index] = value;\r\n return fieldValues;\r\n};\n\nconst 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(mapIds(control._getFieldArray(name), keyName));\r\n const _fieldIds = React.useRef(fields);\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n _fieldIds.current = fields;\r\n control._names.array.add(name);\r\n useSubscribe({\r\n callback: ({ values, name: fieldArrayName }) => {\r\n if (fieldArrayName === _name.current || !fieldArrayName) {\r\n setFields(mapIds(get(values, _name.current), keyName));\r\n }\r\n },\r\n subject: control._subjects.array,\r\n skipEarlySubscription: true,\r\n });\r\n const updateValues = React.useCallback((updatedFieldArrayValuesWithKey) => {\r\n const updatedFieldArrayValues = omitKeys(updatedFieldArrayValuesWithKey, keyName);\r\n set(control._formValues, name, updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValuesWithKey);\r\n return updatedFieldArrayValues;\r\n }, [control, name, keyName]);\r\n const append$1 = (value, options) => {\r\n const appendValue = convertToArrayPayload(value);\r\n const updatedFieldArrayValuesWithKey = append(mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName), mapIds(appendValue, keyName));\r\n control._updateFieldArray(name, append, {\r\n argA: fillEmptyArray(value),\r\n }, updateValues(updatedFieldArrayValuesWithKey));\r\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValuesWithKey.length - appendValue.length, options);\r\n };\r\n const prepend$1 = (value, options) => {\r\n const updatedFieldArrayValuesWithKey = prepend(mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName), mapIds(convertToArrayPayload(value), keyName));\r\n control._updateFieldArray(name, prepend, {\r\n argA: fillEmptyArray(value),\r\n }, updateValues(updatedFieldArrayValuesWithKey));\r\n control._names.focus = getFocusFieldName(name, 0, options);\r\n };\r\n const remove = (index) => {\r\n const updatedFieldArrayValuesWithKey = removeArrayAt(mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName), index);\r\n control._updateFieldArray(name, removeArrayAt, {\r\n argA: index,\r\n }, updateValues(updatedFieldArrayValuesWithKey));\r\n };\r\n const insert$1 = (index, value, options) => {\r\n const updatedFieldArrayValuesWithKey = insert(mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName), index, mapIds(convertToArrayPayload(value), keyName));\r\n control._updateFieldArray(name, insert, {\r\n argA: index,\r\n argB: fillEmptyArray(value),\r\n }, updateValues(updatedFieldArrayValuesWithKey));\r\n control._names.focus = getFocusFieldName(name, index, options);\r\n };\r\n const swap = (indexA, indexB) => {\r\n const updatedFieldArrayValuesWithKey = mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName);\r\n swapArrayAt(updatedFieldArrayValuesWithKey, indexA, indexB);\r\n control._updateFieldArray(name, swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n }, updateValues(updatedFieldArrayValuesWithKey), false);\r\n };\r\n const move = (from, to) => {\r\n const updatedFieldArrayValuesWithKey = mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName);\r\n moveArrayAt(updatedFieldArrayValuesWithKey, from, to);\r\n control._updateFieldArray(name, moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n }, updateValues(updatedFieldArrayValuesWithKey), false);\r\n };\r\n const update = (index, value) => {\r\n const updatedFieldArrayValuesWithKey = mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName);\r\n const updatedFieldArrayValues = updateAt(updatedFieldArrayValuesWithKey, index, value);\r\n _fieldIds.current = mapIds(updatedFieldArrayValues, keyName);\r\n control._updateFieldArray(name, updateAt, {\r\n argA: index,\r\n argB: value,\r\n }, updateValues(_fieldIds.current), true, false);\r\n };\r\n const replace = (value) => {\r\n const updatedFieldArrayValuesWithKey = mapIds(convertToArrayPayload(value), keyName);\r\n control._updateFieldArray(name, () => updatedFieldArrayValuesWithKey, {}, updateValues(updatedFieldArrayValuesWithKey), true, false);\r\n };\r\n React.useEffect(() => {\r\n control._stateFlags.action = false;\r\n if (control._names.watchAll) {\r\n control._subjects.state.next({});\r\n }\r\n else {\r\n for (const watchField of control._names.watch) {\r\n if (name.startsWith(watchField)) {\r\n control._subjects.state.next({});\r\n break;\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, keyName]);\r\n React.useEffect(() => {\r\n !get(control._formValues, name) && set(control._formValues, name, []);\r\n return () => {\r\n if (control._options.shouldUnregister || shouldUnregister) {\r\n control.unregister(name);\r\n }\r\n };\r\n }, [name, control, keyName, shouldUnregister]);\r\n return {\r\n swap: React.useCallback(swap, [updateValues, name, control, keyName]),\r\n move: React.useCallback(move, [updateValues, name, control, keyName]),\r\n prepend: React.useCallback(prepend$1, [updateValues, name, control, keyName]),\r\n append: React.useCallback(append$1, [updateValues, name, control, keyName]),\r\n remove: React.useCallback(remove, [updateValues, name, control, keyName]),\r\n insert: React.useCallback(insert$1, [updateValues, name, control, keyName]),\r\n update: React.useCallback(update, [updateValues, name, control, keyName]),\r\n replace: React.useCallback(replace, [updateValues, name, control, keyName]),\r\n fields: fields,\r\n };\r\n};\n\nvar isFunction = (value) => typeof value === 'function';\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 (isArray || isObject(data)) {\r\n copy = isArray ? [] : {};\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n copy = data;\r\n break;\r\n }\r\n copy[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 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 isHTMLElement = (value) => value instanceof HTMLElement;\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckboxFunction = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar isString = (value) => typeof value === 'string';\n\nvar isWeb = typeof window !== 'undefined' &&\r\n typeof window.HTMLElement !== 'undefined' &&\r\n typeof document !== 'undefined';\n\nvar live = (ref) => isHTMLElement(ref) && document.contains(ref);\n\nclass Subscription {\r\n constructor() {\r\n this.tearDowns = [];\r\n }\r\n add(tearDown) {\r\n this.tearDowns.push(tearDown);\r\n }\r\n unsubscribe() {\r\n for (const teardown of this.tearDowns) {\r\n teardown();\r\n }\r\n this.tearDowns = [];\r\n }\r\n}\r\nclass Subscriber {\r\n constructor(observer, subscription) {\r\n this.observer = observer;\r\n this.closed = false;\r\n subscription.add(() => (this.closed = true));\r\n }\r\n next(value) {\r\n if (!this.closed) {\r\n this.observer.next(value);\r\n }\r\n }\r\n}\r\nclass Subject {\r\n constructor() {\r\n this.observers = [];\r\n }\r\n next(value) {\r\n for (const observer of this.observers) {\r\n observer.next(value);\r\n }\r\n }\r\n subscribe(observer) {\r\n const subscription = new Subscription();\r\n const subscriber = new Subscriber(observer, subscription);\r\n this.observers.push(subscriber);\r\n return subscription;\r\n }\r\n unsubscribe() {\r\n this.observers = [];\r\n }\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) => (isObject(data) && !isEmptyObject(data)) || isBoolean(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 isFileInput = (element) => element.type === 'file';\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\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 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 deepMerge(target, source) {\r\n if (isPrimitive(target) || isPrimitive(source)) {\r\n return source;\r\n }\r\n for (const key in source) {\r\n const targetValue = target[key];\r\n const sourceValue = source[key];\r\n try {\r\n target[key] =\r\n (isObject(targetValue) && isObject(sourceValue)) ||\r\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\r\n ? deepMerge(targetValue, sourceValue)\r\n : sourceValue;\r\n }\r\n catch (_a) { }\r\n }\r\n return target;\r\n}\n\nfunction setDirtyFields(values, defaultValues, dirtyFields, parentNode, parentName) {\r\n let index = -1;\r\n while (++index < values.length) {\r\n for (const key in values[index]) {\r\n if (Array.isArray(values[index][key])) {\r\n !dirtyFields[index] && (dirtyFields[index] = {});\r\n dirtyFields[index][key] = [];\r\n setDirtyFields(values[index][key], get(defaultValues[index] || {}, key, []), dirtyFields[index][key], dirtyFields[index], key);\r\n }\r\n else {\r\n !isNullOrUndefined(defaultValues) &&\r\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\r\n ? set(dirtyFields[index] || {}, key)\r\n : (dirtyFields[index] = Object.assign(Object.assign({}, dirtyFields[index]), { [key]: true }));\r\n }\r\n }\r\n parentNode &&\r\n !dirtyFields.length &&\r\n delete parentNode[parentName];\r\n }\r\n return dirtyFields;\r\n}\r\nvar setFieldArrayDirtyFields = (values, defaultValues, dirtyFields) => deepMerge(setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)), setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)));\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\nvar isRegex = (value) => value instanceof RegExp;\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 setCustomValidty = (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] = Object.assign({ type: exceedMax ? maxType : minType, message,\r\n ref }, appendErrorsCurry(exceedMax ? maxType : minType, message));\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] = Object.assign({ type: INPUT_VALIDATION_RULES.required, message, ref: inputRef }, appendErrorsCurry(INPUT_VALIDATION_RULES.required, message));\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidty(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 || parseFloat(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 setCustomValidty(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 setCustomValidty(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] = Object.assign({ type: INPUT_VALIDATION_RULES.pattern, message,\r\n ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message));\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidty(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] = Object.assign(Object.assign({}, validateError), appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message));\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidty(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 = Object.assign(Object.assign({}, validateError), appendErrorsCurry(key, validateError.message));\r\n setCustomValidty(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] = Object.assign({ ref: inputRef }, validationResult);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n setCustomValidty(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\nconst isWindowUndefined = typeof window === 'undefined';\r\nfunction createFormControl(props = {}) {\r\n let _options = Object.assign(Object.assign({}, defaultOptions), props);\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 = _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: new Subject(),\r\n control: new Subject(),\r\n array: new Subject(),\r\n state: new Subject(),\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 isFieldWatched = (name, isBlurEvent) => !isBlurEvent &&\r\n (_names.watchAll ||\r\n _names.watch.has(name) ||\r\n _names.watch.has((name.match(/\\w+/) || [])[0]));\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 executeResolver()).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, method, args, values = [], shouldSetValues = true, shouldSetFields = true) => {\r\n _stateFlags.action = true;\r\n if (shouldSetFields && 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 (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 && get(_formState.touchedFields, name)) {\r\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\r\n shouldSetValues &&\r\n set(_formState.touchedFields, name, touchedFields);\r\n unsetEmptyArray(_formState.touchedFields, name);\r\n }\r\n if (_proxyFormState.dirtyFields || _proxyFormState.isDirty) {\r\n updateFieldArrayDirty(name, values);\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 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, ref) => {\r\n const field = get(_fields, name);\r\n if (field) {\r\n const defaultValue = get(_formValues, name, get(_defaultValues, name));\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 }\r\n _stateFlags.mount && _updateValid();\r\n };\r\n const updateTouchAndDirty = (name, fieldValue, isCurrentTouched, shouldRender = true) => {\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 && !isCurrentTouched) {\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 (isCurrentTouched && !isPreviousFieldTouched) {\r\n set(_formState.touchedFields, name, isCurrentTouched);\r\n output.touchedFields = _formState.touchedFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n (_proxyFormState.touchedFields &&\r\n isPreviousFieldTouched !== isCurrentTouched);\r\n }\r\n isFieldDirty && shouldRender && _subjects.state.next(output);\r\n return isFieldDirty ? output : {};\r\n };\r\n const updateFieldArrayDirty = (name, value) => (set(_formState.dirtyFields, name, setFieldArrayDirtyFields(value, get(_defaultValues, name, []), get(_formState.dirtyFields, name, []))),\r\n unsetEmptyArray(_formState.dirtyFields, name));\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 = Object.assign(Object.assign(Object.assign({}, fieldState), (shouldUpdateValid ? { isValid } : {})), { errors: _formState.errors, name });\r\n _formState = Object.assign(Object.assign({}, _formState), updatedFormState);\r\n _subjects.state.next(updatedFormState);\r\n }\r\n validateFields[name]--;\r\n if (_proxyFormState.isValidating && !validateFields[name]) {\r\n _subjects.state.next({\r\n isValidating: false,\r\n });\r\n validateFields = {};\r\n }\r\n };\r\n const executeResolver = async (name) => _options.resolver\r\n ? await _options.resolver(Object.assign({}, _formValues), _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation))\r\n : {};\r\n const executeResolverValidation = async (names) => {\r\n const { errors } = await executeResolver();\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 fieldReference = field._f;\r\n const fieldValue = omit(field, '_f');\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 = Object.assign({}, (_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 if (names) {\r\n const result = convertToArrayPayload(names).map((fieldName) => (isGlobal && _names.watch.add(fieldName),\r\n get(fieldValues, fieldName)));\r\n return Array.isArray(names) ? result : result[0];\r\n }\r\n isGlobal && (_names.watchAll = true);\r\n return fieldValues;\r\n };\r\n const _getFieldArray = (name) => get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []);\r\n const setFieldValue = (name, value, options = {}, shouldRender) => {\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 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.checked = Array.isArray(fieldValue)\r\n ? !!fieldValue.find((data) => data === checkboxRef.value)\r\n : fieldValue === checkboxRef.value))\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 {\r\n fieldReference.ref.value = fieldValue;\r\n }\r\n shouldRender &&\r\n _subjects.control.next({\r\n values: _formValues,\r\n name,\r\n });\r\n }\r\n }\r\n (options.shouldDirty || options.shouldTouch) &&\r\n updateTouchAndDirty(name, fieldValue, options.shouldTouch);\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, true);\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 set(_formValues, name, value);\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 updateFieldArrayDirty(name, value);\r\n _subjects.state.next({\r\n name,\r\n dirtyFields: _formState.dirtyFields,\r\n isDirty: _getDirty(name, value),\r\n });\r\n }\r\n }\r\n else {\r\n field && !field._f && !isNullOrUndefined(value)\r\n ? setValues(name, value, options)\r\n : setFieldValue(name, value, options, true);\r\n }\r\n isFieldWatched(name) && _subjects.state.next({});\r\n _subjects.watch.next({\r\n name,\r\n });\r\n };\r\n const handleChange = 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 ? getFieldValue(field._f) : target.value;\r\n const isBlurEvent = event.type === EVENTS.BLUR;\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 isWatched = isFieldWatched(name, isBlurEvent);\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 set(_formValues, name, fieldValue);\r\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\r\n const shouldRender = !isEmptyObject(fieldState) || isWatched;\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(Object.assign({ name }, (isWatched ? {} : fieldState))));\r\n }\r\n !isBlurEvent && isWatched && _subjects.state.next({});\r\n validateFields[name] = validateFields[name] ? +1 : 1;\r\n _proxyFormState.isValidating &&\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const { errors } = await executeResolver([name]);\r\n error = get(errors, name);\r\n if (isCheckBoxInput(target) && !error) {\r\n const parentNodeName = getNodeParentName(name);\r\n const parentField = get(_fields, parentNodeName);\r\n if (Array.isArray(parentField) &&\r\n parentField.every((field) => field._f && isCheckBoxInput(field._f.ref))) {\r\n const parentError = get(errors, parentNodeName, {});\r\n parentError.type && (error = parentError);\r\n name = parentNodeName;\r\n }\r\n }\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 && 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 executeResolverValidation(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 _updateValid();\r\n }\r\n else {\r\n validationResult = isValid = await executeBuildInValidation(_fields);\r\n }\r\n _subjects.state.next(Object.assign(Object.assign({}, (!isString(name) || isValid !== _formState.isValid ? {} : { name })), { errors: _formState.errors, isValid, isValidating: false }));\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 = Object.assign(Object.assign({}, _defaultValues), (_stateFlags.mount ? _formValues : {}));\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 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, Object.assign(Object.assign({}, error), { ref }));\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(Object.assign(Object.assign({}, _formState), (!options.keepDirty ? {} : { isDirty: _getDirty() })));\r\n !options.keepIsValid && _updateValid();\r\n };\r\n const register = (name, options = {}) => {\r\n const field = get(_fields, name);\r\n set(_fields, name, {\r\n _f: Object.assign(Object.assign(Object.assign({}, (field && field._f ? field._f : { ref: { name } })), { name, mount: true }), options),\r\n });\r\n _names.mount.add(name);\r\n !isUndefined(options.value) && set(_formValues, name, options.value);\r\n field\r\n ? isBoolean(options.disabled) &&\r\n set(_formValues, name, options.disabled\r\n ? undefined\r\n : get(_formValues, name, getFieldValue(field._f)))\r\n : updateValidAndValue(name, true);\r\n return isWindowUndefined\r\n ? { name: name }\r\n : Object.assign(Object.assign({ name }, (isBoolean(options.disabled)\r\n ? { disabled: options.disabled }\r\n : {})), { onChange: handleChange, onBlur: handleChange, ref: (ref) => {\r\n if (ref) {\r\n register(name, options);\r\n let field = get(_fields, name);\r\n const fieldRef = isUndefined(ref.value)\r\n ? ref.querySelectorAll\r\n ? ref.querySelectorAll('input,select,textarea')[0] ||\r\n ref\r\n : ref\r\n : ref;\r\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(fieldRef);\r\n if (fieldRef === field._f.ref ||\r\n (isRadioOrCheckbox &&\r\n compact(field._f.refs || []).find((option) => option === fieldRef))) {\r\n return;\r\n }\r\n field = {\r\n _f: isRadioOrCheckbox\r\n ? Object.assign(Object.assign({}, field._f), { refs: [\r\n ...compact(field._f.refs || []).filter(live),\r\n fieldRef,\r\n ], ref: { type: fieldRef.type, name } }) : Object.assign(Object.assign({}, field._f), { ref: fieldRef }),\r\n };\r\n set(_fields, name, field);\r\n (!options || !options.disabled) &&\r\n updateValidAndValue(name, false, fieldRef);\r\n }\r\n else {\r\n const field = get(_fields, name, {});\r\n const shouldUnregister = _options.shouldUnregister || options.shouldUnregister;\r\n if (field._f) {\r\n field._f.mount = false;\r\n }\r\n shouldUnregister &&\r\n !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\r\n _names.unMount.add(name);\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 = Object.assign({}, _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 executeResolver();\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 Object.keys(_formState.errors).every((name) => get(fieldValues, name))) {\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 onInvalid && (await onInvalid(_formState.errors, e));\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 reset = (formValues, keepStateOptions = {}) => {\r\n const hasUpdatedFormValues = !isEmptyObject(formValues);\r\n const updatedValues = formValues || _defaultValues;\r\n const cloneUpdatedValues = cloneObject(updatedValues);\r\n if (!keepStateOptions.keepDefaultValues) {\r\n _defaultValues = updatedValues;\r\n }\r\n if (!keepStateOptions.keepValues) {\r\n if (isWeb) {\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 _formValues = props.shouldUnregister\r\n ? keepStateOptions.keepDefaultValues\r\n ? _defaultValues\r\n : {}\r\n : cloneUpdatedValues;\r\n _fields = {};\r\n _subjects.control.next({\r\n values: hasUpdatedFormValues ? cloneUpdatedValues : _defaultValues,\r\n });\r\n _subjects.watch.next({});\r\n _subjects.array.next({\r\n values: cloneUpdatedValues,\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 _subjects.state.next({\r\n submitCount: keepStateOptions.keepSubmitCount\r\n ? _formState.submitCount\r\n : 0,\r\n isDirty: keepStateOptions.keepDirty\r\n ? _formState.isDirty\r\n : keepStateOptions.keepDefaultValues\r\n ? !deepEqual(formValues, _defaultValues)\r\n : false,\r\n isSubmitted: keepStateOptions.keepIsSubmitted\r\n ? _formState.isSubmitted\r\n : false,\r\n dirtyFields: keepStateOptions.keepDirty\r\n ? _formState.dirtyFields\r\n : (keepStateOptions.keepDefaultValues && formValues\r\n ? Object.entries(formValues).reduce((previous, [key, value]) => (Object.assign(Object.assign({}, previous), { [key]: value !== get(_defaultValues, key) })), {})\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 _stateFlags.mount =\r\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\r\n _stateFlags.watch = !!props.shouldUnregister;\r\n };\r\n const setFocus = (name) => {\r\n const field = get(_fields, name)._f;\r\n (field.ref.focus ? field.ref : field.refs[0]).focus();\r\n };\r\n return {\r\n control: {\r\n register,\r\n unregister,\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 set _fields(value) {\r\n _fields = value;\r\n },\r\n get _formValues() {\r\n return _formValues;\r\n },\r\n set _formValues(value) {\r\n _formValues = value;\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 set _defaultValues(value) {\r\n _defaultValues = value;\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 = Object.assign(Object.assign({}, _options), value);\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 clearErrors,\r\n unregister,\r\n setError,\r\n setFocus,\r\n };\r\n}\n\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 = Object.assign(Object.assign({}, createFormControl(props)), { formState });\r\n }\r\n const control = _formControl.current.control;\r\n useSubscribe({\r\n subject: control._subjects.state,\r\n callback: (formState) => {\r\n if (shouldRenderFormState(formState, control._proxyFormState, true)) {\r\n control._formState = Object.assign(Object.assign({}, control._formState), formState);\r\n updateFormState(Object.assign({}, control._formState));\r\n }\r\n },\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\nfunction useWatch(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, defaultValue, disabled, } = props || {};\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n useSubscribe({\r\n disabled,\r\n subject: control._subjects.watch,\r\n callback: (formState) => {\r\n if (shouldSubscribeByName(_name.current, formState.name)) {\r\n control._stateFlags.mount = true;\r\n const fieldValues = control._getWatch(_name.current, defaultValue);\r\n updateValue(isObject(fieldValues)\r\n ? Object.assign({}, fieldValues) : Array.isArray(fieldValues)\r\n ? [...fieldValues]\r\n : fieldValues);\r\n }\r\n },\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\nexport { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.js.map\n"],"sourceRoot":""}