react-hook-form 7.0.4 → 7.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +8 -3
  2. package/dist/index.cjs.js +2 -0
  3. package/dist/index.cjs.js.map +1 -0
  4. package/dist/index.esm.js +47 -49
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/index.umd.js +2 -0
  7. package/dist/index.umd.js.map +1 -0
  8. package/dist/types/form.d.ts +80 -2
  9. package/package.json +10 -11
  10. package/dist/__tests__/logic/appendErrors.test.d.ts +0 -1
  11. package/dist/__tests__/logic/focusFieldBy.test.d.ts +0 -1
  12. package/dist/__tests__/logic/generateId.test.d.ts +0 -1
  13. package/dist/__tests__/logic/getCheckboxValue.test.d.ts +0 -1
  14. package/dist/__tests__/logic/getControllerValue.test.d.ts +0 -1
  15. package/dist/__tests__/logic/getFieldValue.test.d.ts +0 -1
  16. package/dist/__tests__/logic/getFields.test.d.ts +0 -1
  17. package/dist/__tests__/logic/getFieldsValues.test.d.ts +0 -1
  18. package/dist/__tests__/logic/getMultipleSelectValue.test.d.ts +0 -1
  19. package/dist/__tests__/logic/getNodeParentName.test.d.ts +0 -1
  20. package/dist/__tests__/logic/getRadioValue.test.d.ts +0 -1
  21. package/dist/__tests__/logic/getValidateError.test.d.ts +0 -1
  22. package/dist/__tests__/logic/getValueAndMessage.test.d.ts +0 -1
  23. package/dist/__tests__/logic/isErrorStateChanged.test.d.ts +0 -1
  24. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts +0 -1
  25. package/dist/__tests__/logic/setFieldArrayDirtyFields.test.d.ts +0 -1
  26. package/dist/__tests__/logic/skipValidation.test.d.ts +0 -1
  27. package/dist/__tests__/logic/validateField.test.d.ts +0 -1
  28. package/dist/__tests__/useFieldArray/append.test.d.ts +0 -1
  29. package/dist/__tests__/useFieldArray/focus.test.d.ts +0 -1
  30. package/dist/__tests__/useFieldArray/insert.test.d.ts +0 -1
  31. package/dist/__tests__/useFieldArray/move.test.d.ts +0 -1
  32. package/dist/__tests__/useFieldArray/prepend.test.d.ts +0 -1
  33. package/dist/__tests__/useFieldArray/remove.test.d.ts +0 -1
  34. package/dist/__tests__/useFieldArray/swap.test.d.ts +0 -1
  35. package/dist/__tests__/useForm/clearErrors.test.d.ts +0 -1
  36. package/dist/__tests__/useForm/formState.test.d.ts +0 -1
  37. package/dist/__tests__/useForm/getValues.test.d.ts +0 -1
  38. package/dist/__tests__/useForm/handleSubmit.test.d.ts +0 -1
  39. package/dist/__tests__/useForm/register.test.d.ts +0 -1
  40. package/dist/__tests__/useForm/reset.test.d.ts +0 -1
  41. package/dist/__tests__/useForm/setError.test.d.ts +0 -1
  42. package/dist/__tests__/useForm/setValue.test.d.ts +0 -1
  43. package/dist/__tests__/useForm/trigger.test.d.ts +0 -1
  44. package/dist/__tests__/useForm/unregister.test.d.ts +0 -1
  45. package/dist/__tests__/useForm/watch.test.d.ts +0 -1
  46. package/dist/__tests__/utils/Subject.test.d.ts +0 -1
  47. package/dist/__tests__/utils/compact.test.d.ts +0 -1
  48. package/dist/__tests__/utils/deepEqual.test.d.ts +0 -1
  49. package/dist/__tests__/utils/deepMerge.test.d.ts +0 -1
  50. package/dist/__tests__/utils/fillBooleanArray.test.d.ts +0 -1
  51. package/dist/__tests__/utils/fillEmptyArray.test.d.ts +0 -1
  52. package/dist/__tests__/utils/get.test.d.ts +0 -1
  53. package/dist/__tests__/utils/insert.test.d.ts +0 -1
  54. package/dist/__tests__/utils/isBoolean.test.d.ts +0 -1
  55. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts +0 -1
  56. package/dist/__tests__/utils/isEmptyObject.test.d.ts +0 -1
  57. package/dist/__tests__/utils/isFileInput.test.d.ts +0 -1
  58. package/dist/__tests__/utils/isFunction.test.d.ts +0 -1
  59. package/dist/__tests__/utils/isHTMLElement.test.d.ts +0 -1
  60. package/dist/__tests__/utils/isKey.test.d.ts +0 -1
  61. package/dist/__tests__/utils/isMessage.test.d.ts +0 -1
  62. package/dist/__tests__/utils/isMultipleSelect.test.d.ts +0 -1
  63. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts +0 -1
  64. package/dist/__tests__/utils/isObject.test.d.ts +0 -1
  65. package/dist/__tests__/utils/isPrimitive.test.d.ts +0 -1
  66. package/dist/__tests__/utils/isRadioInput.test.d.ts +0 -1
  67. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts +0 -1
  68. package/dist/__tests__/utils/isRegex.test.d.ts +0 -1
  69. package/dist/__tests__/utils/isSelectInput.test.d.ts +0 -1
  70. package/dist/__tests__/utils/isString.test.d.ts +0 -1
  71. package/dist/__tests__/utils/isUndefined.test.d.ts +0 -1
  72. package/dist/__tests__/utils/move.test.d.ts +0 -1
  73. package/dist/__tests__/utils/omit.test.d.ts +0 -1
  74. package/dist/__tests__/utils/prepend.test.d.ts +0 -1
  75. package/dist/__tests__/utils/remove.test.d.ts +0 -1
  76. package/dist/__tests__/utils/set.test.d.ts +0 -1
  77. package/dist/__tests__/utils/stringToPath.test.d.ts +0 -1
  78. package/dist/__tests__/utils/swap.test.d.ts +0 -1
  79. package/dist/__tests__/utils/unset.test.d.ts +0 -1
  80. package/dist/__tests__/utils/validationModeChecker.test.d.ts +0 -1
  81. package/dist/index.cjs.development.js +0 -1676
  82. package/dist/index.cjs.development.js.map +0 -1
  83. package/dist/index.cjs.production.min.js +0 -2
  84. package/dist/index.cjs.production.min.js.map +0 -1
  85. package/dist/index.js +0 -8
  86. package/dist/index.umd.development.js +0 -1680
  87. package/dist/index.umd.development.js.map +0 -1
  88. package/dist/index.umd.production.min.js +0 -2
  89. package/dist/index.umd.production.min.js.map +0 -1
  90. package/dist/logic/isErrorStateChanged.d.ts +0 -9
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.development.js","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getControllerValue.ts","../src/logic/getNodeParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/compact.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/constants.ts","../src/utils/omit.ts","../src/useFormContext.tsx","../src/logic/getProxyFormState.ts","../src/utils/isEmptyObject.ts","../src/logic/shouldRenderFormState.ts","../src/utils/isWeb.ts","../src/utils/isProxyEnabled.ts","../src/useFormState.ts","../src/useController.ts","../src/controller.tsx","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/getFieldsValues.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/utils/deepMerge.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/utils/append.ts","../src/utils/fillEmptyArray.ts","../src/utils/insert.ts","../src/utils/move.ts","../src/utils/prepend.ts","../src/utils/remove.ts","../src/utils/swap.ts","../src/utils/isBoolean.ts","../src/utils/unset.ts","../src/useFieldArray.ts","../src/logic/getFields.ts","../src/utils/isFileInput.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioInput.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getMultipleSelectValue.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/isErrorStateChanged.ts","../src/logic/skipValidation.ts","../src/utils/isFunction.ts","../src/utils/isString.ts","../src/utils/isMessage.ts","../src/utils/isRegex.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/utils/getValidationModes.ts","../src/utils/isHTMLElement.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/Subject.ts","../src/useForm.ts","../src/useWatch.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is null | undefined => value == null;\n","import isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown) => typeof value === 'object';\n\nexport default <T extends object>(value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !(value instanceof Date);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","export default (name: string) => name.substring(0, name.search(/.\\d/)) || name;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n [...names].some((current) => getNodeParentName(name) === current);\n","export default (value: any[]) => value.filter(Boolean);\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isUndefined from './isUndefined';\n\nexport default (obj: any = {}, path: string, defaultValue?: unknown) => {\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) => (isNullOrUndefined(result) ? result : result[key]),\n obj,\n );\n\n return isUndefined(result) || result === obj\n ? isUndefined(obj[path])\n ? defaultValue\n : obj[path]\n : result;\n};\n","import { ValidationMode } from './types';\n\nexport const EVENTS = {\n BLUR: 'blur',\n CHANGE: 'change',\n};\n\nexport const VALIDATION_MODE: ValidationMode = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\n\nexport const SELECT = 'select';\n\nexport const UNDEFINED = 'undefined';\n\nexport const INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n","export default <Key extends string, T extends Record<Key, any>>(\n source: T,\n key: Key,\n): Omit<T, Key> => {\n const copy = { ...source };\n delete copy[key];\n\n return copy;\n};\n","import * as React from 'react';\n\nimport omit from './utils/omit';\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst FormContext = React.createContext<UseFormReturn | null>(null);\n\nFormContext.displayName = 'RHFContext';\n\nexport const useFormContext = <\n TFieldValues extends FieldValues\n>(): UseFormReturn<TFieldValues> =>\n (React.useContext(FormContext) as unknown) as UseFormReturn<TFieldValues>;\n\nexport const FormProvider = <TFieldValues extends FieldValues>(\n props: FormProviderProps<TFieldValues>,\n) => (\n <FormContext.Provider\n value={(omit(props, 'children') as unknown) as UseFormReturn}\n >\n {props.children}\n </FormContext.Provider>\n);\n","import * as React from 'react';\n\nimport { VALIDATION_MODE } from '../constants';\nimport { FormState, FormStateProxy, ReadFormState } from '../types';\n\nexport default <TFieldValues>(\n isProxyEnabled: boolean,\n formState: FormState<TFieldValues>,\n readFormStateRef: React.MutableRefObject<ReadFormState>,\n localReadFormStateRef?: React.MutableRefObject<ReadFormState>,\n isRoot = true,\n) =>\n isProxyEnabled\n ? new Proxy(formState, {\n get: (obj, prop: keyof FormStateProxy) => {\n if (prop in obj) {\n if (readFormStateRef.current[prop] !== VALIDATION_MODE.all) {\n readFormStateRef.current[prop] = isRoot\n ? VALIDATION_MODE.all\n : true;\n }\n localReadFormStateRef &&\n (localReadFormStateRef.current[prop] = true);\n return obj[prop];\n }\n\n return undefined;\n },\n })\n : formState;\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport { ReadFormState } from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\n\nexport default <T, K extends ReadFormState>(\n formState: T,\n readFormStateRef: K,\n isRoot?: boolean,\n) =>\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(readFormStateRef).length ||\n Object.keys(formState).find(\n (key) =>\n readFormStateRef[key as keyof ReadFormState] ===\n (isRoot ? VALIDATION_MODE.all : true),\n );\n","import { UNDEFINED } from '../constants';\n\nexport default typeof window !== UNDEFINED &&\n typeof window.HTMLElement !== UNDEFINED &&\n typeof document !== UNDEFINED;\n","import { UNDEFINED } from '../constants';\n\nimport isWeb from './isWeb';\n\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\n\nexport default isProxyEnabled;\n","import * as React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport {\n FieldValues,\n FormState,\n UseFormStateProps,\n UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\n props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n const methods = useFormContext();\n const { formStateRef, formStateSubjectRef, readFormStateRef } =\n (props && props.control) || methods.control;\n\n const [formState, updateFormState] = React.useState(formStateRef.current);\n const readFormState = React.useRef({\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n\n React.useEffect(() => {\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next: (formState) => {\n shouldRenderFormState(formState, readFormState.current) &&\n updateFormState({\n ...formStateRef.current,\n ...formState,\n });\n },\n });\n\n return () => formStateSubscription.unsubscribe();\n }, []);\n\n return getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState as FormState<TFieldValues>,\n readFormStateRef,\n readFormState,\n false,\n );\n}\n\nexport { useFormState };\n","import * as React from 'react';\n\nimport getControllerValue from './logic/getControllerValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport isUndefined from './utils/isUndefined';\nimport { EVENTS } from './constants';\nimport {\n FieldPath,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\n\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n name,\n rules,\n defaultValue,\n control,\n}: UseControllerProps<TFieldValues, TName>): UseControllerReturn<\n TFieldValues,\n TName\n> {\n const methods = useFormContext<TFieldValues>();\n const {\n defaultValuesRef,\n register,\n fieldsRef,\n fieldArrayNamesRef,\n controllerSubjectRef,\n } = control || methods.control;\n\n const { onChange, onBlur, ref } = register(name, rules);\n const [value, setInputStateValue] = React.useState(\n isUndefined(get(fieldsRef.current, name)._f.value) ||\n isNameInFieldArray(fieldArrayNamesRef.current, name)\n ? isUndefined(defaultValue)\n ? get(defaultValuesRef.current, name)\n : defaultValue\n : get(fieldsRef.current, name)._f.value,\n );\n const formState = useFormState({\n control: control || methods.control,\n });\n get(fieldsRef.current, name)._f.value = value;\n\n React.useEffect(() => {\n const controllerSubscription = controllerSubjectRef.current.subscribe({\n next: (data) =>\n (!data.name || name === data.name) &&\n setInputStateValue(get(data.values, name)),\n });\n\n (ref as (instance: any) => void)({\n target: value,\n });\n\n return () => controllerSubscription.unsubscribe();\n }, [name]);\n\n return {\n field: {\n onChange: (event: any) => {\n const value = getControllerValue(event);\n setInputStateValue(value);\n\n onChange({\n target: {\n value,\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n });\n },\n onBlur: () => {\n onBlur({\n target: {\n name: name as InternalFieldName,\n },\n type: EVENTS.BLUR,\n });\n },\n name,\n value,\n ref,\n },\n formState,\n fieldState: Object.defineProperties(\n {},\n {\n invalid: {\n get() {\n return !!get(formState.errors, name);\n },\n },\n isDirty: {\n get() {\n return !!get(formState.dirtyFields, name);\n },\n },\n isTouched: {\n get() {\n return !!get(formState.touchedFields, name);\n },\n },\n error: {\n get() {\n return get(formState.errors, name);\n },\n },\n },\n ),\n };\n}\n","import { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>(\n props: ControllerProps<TFieldValues, TName>,\n) => props.render(useController<TFieldValues, TName>(props));\n\nexport { Controller };\n","import {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default function set(\n object: FieldValues,\n path: string,\n value?: unknown,\n) {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n}\n","import { FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\nimport isUndefined from '../utils/isUndefined';\nimport omit from '../utils/omit';\n\nconst focusFieldBy = (\n fields: FieldRefs,\n callback: (name: string) => boolean,\n fieldsNames?: Set<InternalFieldName>,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f && callback(_f.name)) {\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\n break;\n } else if (_f.refs) {\n _f.refs[0].focus();\n break;\n }\n } else if (isObject(current)) {\n focusFieldBy(current, callback);\n }\n }\n }\n};\n\nexport default focusFieldBy;\n","import * as React from 'react';\n\nimport { FieldRefs, FieldValues } from '../types';\nimport omit from '../utils/omit';\nimport set from '../utils/set';\n\nconst getFieldsValues = (\n fieldsRef: React.MutableRefObject<FieldRefs>,\n defaultValuesRef: React.MutableRefObject<FieldValues> = { current: {} },\n output: Record<string, any> = {},\n): any => {\n for (const name in fieldsRef.current) {\n const field = fieldsRef.current[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n set(\n output,\n name,\n _f\n ? _f.ref.disabled || (_f.refs && _f.refs.every((ref) => ref.disabled))\n ? undefined\n : _f.value\n : Array.isArray(field)\n ? []\n : {},\n );\n\n if (current) {\n getFieldsValues(\n {\n current,\n },\n defaultValuesRef,\n output[name],\n );\n }\n }\n }\n\n return {\n ...defaultValuesRef.current,\n ...output,\n };\n};\n\nexport default getFieldsValues;\n","import { UNDEFINED } from '../constants';\n\nexport default () => {\n const d =\n typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n","import { FieldValues } from '../types';\n\nimport generateId from './generateId';\n\nexport default <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id'\n>(\n values: Partial<TFieldArrayValues>[] = [],\n keyName: TKeyName,\n): any =>\n values.map((value: Partial<TFieldArrayValues>) => ({\n [keyName]: (value && value[keyName]) || generateId(),\n ...value,\n }));\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import * as React from 'react';\n\nimport isObject from '../utils/isObject';\n\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(\n object1: any,\n object2: any,\n isErrorObject?: boolean,\n) {\n if (\n isPrimitive(object1) ||\n isPrimitive(object2) ||\n object1 instanceof Date ||\n object2 instanceof Date\n ) {\n return object1 === object2;\n }\n\n if (!React.isValidElement(object1)) {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!(isErrorObject && key === 'ref')) {\n const val2 = object2[key];\n\n if (\n (isObject(val1) || Array.isArray(val1)) &&\n (isObject(val2) || Array.isArray(val2))\n ? !deepEqual(val1, val2, isErrorObject)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n","import isObject from './isObject';\nimport isPrimitive from './isPrimitive';\n\nexport function deepMerge<\n T extends Record<keyof T, any>,\n U extends Record<keyof U, any>\n>(target: T, source: U): T & U {\n if (isPrimitive(target) || isPrimitive(source)) {\n return source;\n }\n\n for (const key in source) {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n try {\n target[key] =\n (isObject(targetValue) && isObject(sourceValue)) ||\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\n ? deepMerge(targetValue, sourceValue)\n : sourceValue;\n } catch {}\n }\n\n return target;\n}\n","import { get } from '../utils';\nimport deepEqual from '../utils/deepEqual';\nimport { deepMerge } from '../utils/deepMerge';\nimport set from '../utils/set';\n\nfunction setDirtyFields<\n T extends Record<string, unknown>[],\n U extends Record<string, unknown>[],\n K extends Record<string, boolean | []>\n>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n parentNode?: K,\n parentName?: keyof K,\n) {\n let index = -1;\n\n while (++index < values.length) {\n for (const key in values[index]) {\n if (Array.isArray(values[index][key])) {\n !dirtyFields[index] && (dirtyFields[index] = {});\n dirtyFields[index][key] = [];\n setDirtyFields(\n values[index][key] as T,\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\n ? set(dirtyFields[index] || {}, key)\n : (dirtyFields[index] = {\n ...dirtyFields[index],\n [key]: true,\n });\n }\n }\n\n parentNode &&\n !dirtyFields.length &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields;\n}\n\nexport default <T extends U, U extends Record<string, unknown>[]>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n) =>\n deepMerge(\n setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)),\n setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)),\n );\n","export default function append<T>(data: T[], value: T | T[]): T[] {\n return [...data, ...(Array.isArray(value) ? value : [value])];\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? Array(value.length).fill(undefined) : undefined;\n","export default function insert<T>(data: T[], index: number): (T | undefined)[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value: T | T[],\n): T[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value?: T | T[],\n): (T | undefined)[] {\n return [\n ...data.slice(0, index),\n ...(Array.isArray(value) ? value : [value]),\n ...data.slice(index),\n ];\n}\n","import isUndefined from './isUndefined';\n\nexport default <T>(\n data: (T | undefined)[],\n from: number,\n to: number,\n): (T | undefined)[] => {\n if (Array.isArray(data)) {\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n }\n\n return [];\n};\n","export default function prepend<T>(data: T[], value: T | T[]): T[] {\n return [...(Array.isArray(value) ? value : [value]), ...data];\n}\n","import compact from './compact';\nimport isUndefined from './isUndefined';\n\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\n let i = 0;\n const temp = [...data];\n\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n\n return compact(temp).length ? temp : [];\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n isUndefined(index)\n ? []\n : removeAtIndexes(\n data,\n (Array.isArray(index) ? index : [index]).sort((a, b) => a - b),\n );\n","export default <T>(data: T[], indexA: number, indexB: number): void => {\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","import isBoolean from './isBoolean';\nimport isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nexport default function unset(object: any, path: string) {\n const updatePath = isKey(path) ? [path] : stringToPath(path);\n const childObject =\n updatePath.length == 1 ? object : baseGet(object, updatePath);\n const key = updatePath[updatePath.length - 1];\n let previousObjRef;\n\n if (childObject) {\n delete childObject[key];\n }\n\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\n let index = -1;\n let objectRef;\n const currentPaths = updatePath.slice(0, -(k + 1));\n const currentPathsLength = currentPaths.length - 1;\n\n if (k > 0) {\n previousObjRef = object;\n }\n\n while (++index < currentPaths.length) {\n const item = currentPaths[index];\n objectRef = objectRef ? objectRef[item] : object[item];\n\n if (\n currentPathsLength === index &&\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\n (Array.isArray(objectRef) &&\n !objectRef.filter(\n (data) =>\n (isObject(data) && !isEmptyObject(data)) || isBoolean(data),\n ).length))\n ) {\n previousObjRef ? delete previousObjRef[item] : delete object[item];\n }\n\n previousObjRef = objectRef;\n }\n }\n\n return object;\n}\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldArrayParentName from './logic/getNodeParentName';\nimport mapIds from './logic/mapId';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport appendAt from './utils/append';\nimport compact from './utils/compact';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isPrimitive from './utils/isPrimitive';\nimport isUndefined from './utils/isUndefined';\nimport moveArrayAt from './utils/move';\nimport omit from './utils/omit';\nimport prependAt from './utils/prepend';\nimport removeArrayAt from './utils/remove';\nimport set from './utils/set';\nimport swapArrayAt from './utils/swap';\nimport unset from './utils/unset';\nimport {\n FieldArray,\n FieldArrayMethodProps,\n FieldArrayPath,\n FieldArrayWithId,\n FieldErrors,\n FieldValues,\n UseFieldArrayProps,\n UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport const useFieldArray = <\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n TKeyName extends string = 'id'\n>({\n control,\n name,\n keyName = 'id' as TKeyName,\n}: UseFieldArrayProps<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n>): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> => {\n const methods = useFormContext();\n const focusNameRef = React.useRef('');\n const {\n isWatchAllRef,\n watchFieldsRef,\n getFormIsDirty,\n watchSubjectRef,\n fieldArraySubjectRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n formStateRef,\n formStateSubjectRef,\n readFormStateRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n } = control || methods.control;\n\n const [fields, setFields] = React.useState<\n Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\n >(\n mapIds(\n get(fieldArrayDefaultValuesRef.current, getFieldArrayParentName(name))\n ? get(fieldArrayDefaultValuesRef.current, name, [])\n : get(defaultValuesRef.current, name, []),\n keyName,\n ),\n );\n\n set(fieldArrayDefaultValuesRef.current, name, [...fields]);\n fieldArrayNamesRef.current.add(name);\n\n const omitKey = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[]\n >(\n fields: T,\n ) =>\n fields.map((field) =>\n omit((field || {}) as Record<TKeyName, any>, keyName),\n );\n\n const getCurrentFieldsValues = () => {\n const values = get(getFieldsValues(fieldsRef, defaultValuesRef), name, []);\n\n return mapIds<TFieldValues, TKeyName>(\n get(fieldArrayDefaultValuesRef.current, name, []).map(\n (item: Partial<TFieldValues>, index: number) => ({\n ...item,\n ...values[index],\n }),\n ),\n keyName,\n );\n };\n\n const getFocusDetail = (\n index: number,\n options?: FieldArrayMethodProps,\n ): string =>\n options\n ? !isUndefined(options.focusIndex)\n ? `${name}.${options.focusIndex}`\n : options.focusName\n ? options.focusName\n : !options.shouldFocus\n ? ''\n : `${name}.${index}`\n : `${name}.${index}`;\n\n const resetFields = <T>(index?: T) =>\n (Array.isArray(index) ? index : [index]).forEach((currentIndex) =>\n set(\n fieldsRef.current,\n `${name}${isUndefined(currentIndex) ? '' : `.${currentIndex}`}`,\n isUndefined(currentIndex) ? [] : undefined,\n ),\n );\n\n const setFieldsAndNotify = (\n fieldsValues: Partial<FieldArray<TFieldValues, TFieldArrayName>>[] = [],\n ) => setFields(mapIds(fieldsValues, keyName));\n\n const cleanup = <T>(ref: T) =>\n !compact(get(ref, name, [])).length && unset(ref, name);\n\n const updateDirtyFieldsWithDefaultValues = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[]\n >(\n updatedFieldArrayValues?: T,\n ) =>\n updatedFieldArrayValues &&\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n const batchStateUpdate = <T extends Function>(\n method: T,\n args: {\n argA?: unknown;\n argB?: unknown;\n },\n updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = [],\n shouldSet = true,\n ) => {\n if (get(fieldsRef.current, name)) {\n const output = method(get(fieldsRef.current, name), args.argA, args.argB);\n shouldSet && set(fieldsRef.current, name, output);\n }\n\n if (Array.isArray(get(formStateRef.current.errors, name))) {\n const output = method(\n get(formStateRef.current.errors, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.errors, name, output);\n cleanup(formStateRef.current.errors);\n }\n\n if (\n readFormStateRef.current.touchedFields &&\n get(formStateRef.current.touchedFields, name)\n ) {\n const output = method(\n get(formStateRef.current.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.touchedFields, name, output);\n cleanup(formStateRef.current.touchedFields);\n }\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n updateDirtyFieldsWithDefaultValues(updatedFieldArrayValues);\n cleanup(formStateRef.current.dirtyFields);\n }\n\n if (readFormStateRef.current.isValid) {\n set(\n validFieldsRef.current,\n name,\n method(get(validFieldsRef.current, name, []), args.argA),\n );\n cleanup(validFieldsRef.current);\n\n set(\n fieldsWithValidationRef.current,\n name,\n method(get(fieldsWithValidationRef.current, name, []), args.argA),\n );\n cleanup(fieldsWithValidationRef.current);\n }\n\n formStateSubjectRef.current.next({\n isDirty: getFormIsDirty(name, omitKey(updatedFieldArrayValues)),\n errors: formStateRef.current.errors as FieldErrors<TFieldValues>,\n isValid: formStateRef.current.isValid,\n });\n };\n\n const registerFieldArray = <T extends Object[]>(\n values: T,\n index = 0,\n parentName = '',\n ) =>\n values.forEach(\n (appendValueItem, valueIndex) =>\n !isPrimitive(appendValueItem) &&\n Object.entries(appendValueItem).forEach(([key, value]) => {\n const inputName = `${parentName || name}.${\n parentName ? valueIndex : index + valueIndex\n }.${key}`;\n\n Array.isArray(value)\n ? registerFieldArray(value, valueIndex, inputName)\n : set(fieldsRef.current, inputName, {\n _f: {\n ref: {\n name: inputName,\n },\n name: inputName,\n value,\n },\n });\n }),\n );\n\n const append = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const appendValue = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = appendAt(\n getCurrentFieldsValues(),\n appendValue,\n );\n const currentIndex = updatedFieldArrayValues.length - appendValue.length;\n setFieldsAndNotify(updatedFieldArrayValues);\n batchStateUpdate(\n appendAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n false,\n );\n registerFieldArray(appendValue, currentIndex);\n\n focusNameRef.current = getFocusDetail(currentIndex, options);\n };\n\n const prepend = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const prependValue = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n prependValue,\n );\n setFieldsAndNotify(updatedFieldArrayValues);\n batchStateUpdate(\n prependAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(prependValue);\n\n focusNameRef.current = getFocusDetail(0, options);\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(getCurrentFieldsValues(), index);\n resetFields(index);\n setFieldsAndNotify(updatedFieldArrayValues);\n batchStateUpdate(\n removeArrayAt,\n {\n argA: index,\n },\n updatedFieldArrayValues,\n );\n };\n\n const insert = (\n index: number,\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const insertValue = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = insertAt(\n getCurrentFieldsValues(),\n index,\n insertValue,\n );\n setFieldsAndNotify(updatedFieldArrayValues);\n batchStateUpdate(\n insertAt,\n {\n argA: index,\n argB: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(insertValue, index);\n\n focusNameRef.current = getFocusDetail(index, options);\n };\n\n const swap = (indexA: number, indexB: number) => {\n const fieldValues = getCurrentFieldsValues();\n swapArrayAt(fieldValues, indexA, indexB);\n batchStateUpdate(\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n fieldValues,\n false,\n );\n setFieldsAndNotify(fieldValues);\n };\n\n const move = (from: number, to: number) => {\n const fieldValues = getCurrentFieldsValues();\n moveArrayAt(fieldValues, from, to);\n setFieldsAndNotify(fieldValues);\n batchStateUpdate(\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n fieldValues,\n false,\n );\n };\n\n React.useEffect(() => {\n if (isWatchAllRef.current) {\n formStateSubjectRef.current.next({});\n } else {\n for (const watchField of watchFieldsRef.current) {\n if (name.startsWith(watchField)) {\n formStateSubjectRef.current.next({});\n break;\n }\n }\n }\n\n watchSubjectRef.current.next({\n name,\n value: get(getFieldsValues(fieldsRef, defaultValuesRef), name, []),\n });\n\n focusNameRef.current &&\n focusFieldBy(fieldsRef.current, (key: string) =>\n key.startsWith(focusNameRef.current),\n );\n\n focusNameRef.current = '';\n\n fieldArraySubjectRef.current.next({\n name,\n fields: omitKey([...fields]),\n });\n }, [fields, name]);\n\n React.useEffect(() => {\n const fieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next({ name: inputFieldArrayName, fields, isReset }) {\n if (isReset) {\n unset(fieldsRef.current, inputFieldArrayName || name);\n\n inputFieldArrayName\n ? set(\n fieldArrayDefaultValuesRef.current,\n inputFieldArrayName,\n fields,\n )\n : (fieldArrayDefaultValuesRef.current = fields);\n\n setFieldsAndNotify(get(fieldArrayDefaultValuesRef.current, name));\n }\n },\n });\n !get(fieldsRef.current, name) && set(fieldsRef.current, name, []);\n\n return () => {\n fieldArrayDefaultValuesRef.current = getFieldsValues(fieldsRef);\n fieldArraySubscription.unsubscribe();\n };\n }, []);\n\n return {\n swap: React.useCallback(swap, [name]),\n move: React.useCallback(move, [name]),\n prepend: React.useCallback(prepend, [name]),\n append: React.useCallback(append, [name]),\n remove: React.useCallback(remove, [name]),\n insert: React.useCallback(insert, [name]),\n fields: fields as FieldArrayWithId<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n >[],\n };\n};\n","import { Field, FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isKey from '../utils/isKey';\nimport set from '../utils/set';\n\nexport default function getFields(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n fieldsRefs: FieldRefs,\n) {\n const currentFields: Record<InternalFieldName, Field['_f']> = {};\n\n for (const name of fieldsNames) {\n const field = get(fieldsRefs, name) as Field | undefined;\n\n if (field) {\n !isKey(name)\n ? set(currentFields, name, field._f)\n : (currentFields[name] = field._f);\n }\n }\n\n return currentFields;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","import { SELECT } from '../constants';\nimport { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-multiple`;\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import { Field } from '../types';\n\nexport default (\n value: any,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n valueAsNumber\n ? value === ''\n ? NaN\n : +value\n : valueAsDate\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => value);\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getMultipleSelectValue from './getMultipleSelectValue';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(field?: Field) {\n if (field && field._f) {\n const ref = field._f.ref;\n\n if (ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(field._f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return getMultipleSelectValue(ref.options);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(field._f.refs).value;\n }\n\n return getFieldValueAs(\n isUndefined(ref.value) ? field._f.ref.value : ref.value,\n field._f,\n );\n }\n}\n","import {\n FieldError,\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <TFieldValues extends FieldValues>({\n errors,\n name,\n error,\n validFields,\n fieldsWithValidation,\n}: {\n errors: FieldErrors<TFieldValues>;\n error: FieldError | undefined;\n name: InternalFieldName;\n validFields: FieldNamesMarkedBoolean<TFieldValues>;\n fieldsWithValidation: FieldNamesMarkedBoolean<TFieldValues>;\n}): boolean => {\n const isValid = isUndefined(error);\n const previousError = get(errors, name);\n\n return (\n (isValid && !!previousError) ||\n (!isValid && !deepEqual(previousError, error, true)) ||\n (isValid && get(fieldsWithValidation, name) && !get(validFields, name))\n );\n};\n","export default ({\n isOnBlur,\n isOnChange,\n isOnTouch,\n isTouched,\n isReValidateOnBlur,\n isReValidateOnChange,\n isBlurEvent,\n isSubmitted,\n isOnAll,\n}: {\n isOnAll?: boolean;\n isOnBlur?: boolean;\n isOnChange?: boolean;\n isReValidateOnBlur?: boolean;\n isReValidateOnChange?: boolean;\n isBlurEvent?: boolean;\n isSubmitted?: boolean;\n isOnTouch?: boolean;\n isTouched?: boolean;\n}) => {\n if (isOnAll) {\n return false;\n } else if (!isSubmitted && isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? isReValidateOnBlur : isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? isReValidateOnChange : isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","export default (value: unknown): value is string => typeof value === 'string';\n","import * as React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (isMessage(result) || (isBoolean(result) && !result)) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport { Field, FieldError, InternalFieldErrors, Message } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFunction from '../utils/isFunction';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async (\n {\n _f: {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n value: inputValue,\n valueAsNumber,\n },\n }: Field,\n validateAllFieldCriteria: boolean,\n): Promise<InternalFieldErrors> => {\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n (valueAsNumber && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(\n null,\n name,\n validateAllFieldCriteria,\n error,\n );\n const getMinMaxMessage = (\n exceedMax: boolean,\n maxLengthMessage: Message,\n minLengthMessage: Message,\n maxType = INPUT_VALIDATION_RULES.maxLength,\n minType = INPUT_VALIDATION_RULES.minLength,\n ) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n\n if (\n required &&\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: isRadioOrCheckbox ? (refs || [])[0] || {} : ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (\n (!isNullOrUndefined(min) || !isNullOrUndefined(max)) &&\n inputValue !== ''\n ) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNaN(inputValue)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue);\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value)) {\n exceedMin = valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (isString(inputValue) && !isEmpty && (maxLength || minLength)) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (isString(inputValue) && pattern && !isEmpty) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !patternValue.test(inputValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (validate) {\n const validateRef = isRadioOrCheckbox && refs ? refs[0] : ref;\n\n if (isFunction(validate)) {\n const result = await validate(inputValue);\n const validateError = getValidateError(result, validateRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n for (const [key, validateFunction] of Object.entries(validate)) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateResult = await validateFunction(inputValue);\n const validateError = getValidateError(\n validateResult,\n validateRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: validateRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n return error;\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode } from '../types';\n\nexport default (\n mode?: Mode,\n): {\n isOnSubmit: boolean;\n isOnBlur: boolean;\n isOnChange: boolean;\n isOnAll: boolean;\n isOnTouch: boolean;\n} => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","export default (value: any): value is HTMLElement =>\n value instanceof HTMLElement;\n","import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","export type Observer<T> = {\n next: (value: T) => void;\n};\n\ntype TearDown = () => void;\n\nexport type SubjectType<T> = {\n next: (value: T) => void;\n subscribe: (\n value: Observer<T>,\n ) => {\n unsubscribe: TearDown;\n };\n};\n\nexport class Subscription {\n private tearDowns: TearDown[] = [];\n\n add(tearDown: TearDown) {\n this.tearDowns.push(tearDown);\n }\n\n unsubscribe() {\n for (const teardown of this.tearDowns) {\n teardown();\n }\n this.tearDowns = [];\n }\n}\n\nclass Subscriber<T> implements Observer<T> {\n closed = false;\n\n constructor(private observer: Observer<T>, subscription: Subscription) {\n subscription.add(() => (this.closed = true));\n }\n\n next(value: T) {\n if (!this.closed) {\n this.observer.next(value);\n }\n }\n}\n\nexport default class Subject<T> {\n observers: Observer<T>[];\n\n constructor() {\n this.observers = [];\n }\n\n next(value: T) {\n for (const observer of this.observers) {\n observer.next(value);\n }\n }\n\n subscribe(observer: Observer<T>) {\n const subscription = new Subscription();\n const subscriber = new Subscriber(observer, subscription);\n this.observers.push(subscriber);\n\n return subscription;\n }\n\n unsubscribe() {\n this.observers = [];\n }\n}\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFields from './logic/getFields';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldValue from './logic/getFieldValue';\nimport getNodeParentName from './logic/getNodeParentName';\nimport getProxyFormState from './logic/getProxyFormState';\nimport isErrorStateChanged from './logic/isErrorStateChanged';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport skipValidation from './logic/skipValidation';\nimport validateField from './logic/validateField';\nimport compact from './utils/compact';\nimport deepEqual from './utils/deepEqual';\nimport get from './utils/get';\nimport getValidationModes from './utils/getValidationModes';\nimport isCheckBoxInput from './utils/isCheckBoxInput';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isFileInput from './utils/isFileInput';\nimport isFunction from './utils/isFunction';\nimport isHTMLElement from './utils/isHTMLElement';\nimport isMultipleSelect from './utils/isMultipleSelect';\nimport isNullOrUndefined from './utils/isNullOrUndefined';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport isRadioInput from './utils/isRadioInput';\nimport isRadioOrCheckboxFunction from './utils/isRadioOrCheckbox';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport isWeb from './utils/isWeb';\nimport omit from './utils/omit';\nimport set from './utils/set';\nimport Subject from './utils/Subject';\nimport unset from './utils/unset';\nimport { EVENTS, UNDEFINED, VALIDATION_MODE } from './constants';\nimport {\n ChangeHandler,\n DeepPartial,\n DefaultValues,\n EventType,\n Field,\n FieldArrayDefaultValues,\n FieldError,\n FieldName,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n GetFormIsDirty,\n InternalFieldName,\n InternalNameSet,\n KeepStateOptions,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n RegisterOptions,\n SetFieldValue,\n SetValueConfig,\n UnpackNestedValue,\n UseFormClearErrors,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormRegisterReturn,\n UseFormReset,\n UseFormReturn,\n UseFormSetError,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from './types';\n\nconst isWindowUndefined = typeof window === UNDEFINED;\n\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object\n>({\n mode = VALIDATION_MODE.onSubmit,\n reValidateMode = VALIDATION_MODE.onChange,\n resolver,\n context,\n defaultValues = {} as DefaultValues<TFieldValues>,\n shouldFocusError = true,\n criteriaMode,\n}: UseFormProps<TFieldValues, TContext> = {}): UseFormReturn<TFieldValues> {\n const fieldsRef = React.useRef<FieldRefs>({});\n const fieldsNamesRef = React.useRef<Set<InternalFieldName>>(new Set());\n const formStateSubjectRef = React.useRef(\n new Subject<Partial<FormState<TFieldValues>>>(),\n );\n const watchSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n type?: EventType;\n value?: unknown;\n }>(),\n );\n const controllerSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n values: DefaultValues<TFieldValues>;\n }>(),\n );\n const fieldArraySubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n fields: any;\n isReset?: boolean;\n }>(),\n );\n const fieldArrayDefaultValuesRef = React.useRef<FieldArrayDefaultValues>({});\n const watchFieldsRef = React.useRef<InternalNameSet>(new Set());\n const isMountedRef = React.useRef(false);\n const fieldsWithValidationRef = React.useRef<\n FieldNamesMarkedBoolean<TFieldValues>\n >({});\n const validFieldsRef = React.useRef<FieldNamesMarkedBoolean<TFieldValues>>(\n {},\n );\n const defaultValuesRef = React.useRef<DefaultValues<TFieldValues>>(\n defaultValues,\n );\n const isWatchAllRef = React.useRef(false);\n const contextRef = React.useRef(context);\n const resolverRef = React.useRef(resolver);\n const fieldArrayNamesRef = React.useRef<InternalNameSet>(new Set());\n const validationMode = getValidationModes(mode);\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\n const [formState, setFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n isValidating: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: !validationMode.isOnSubmit,\n errors: {},\n });\n const readFormStateRef = React.useRef<ReadFormState>({\n isDirty: !isProxyEnabled,\n dirtyFields: !isProxyEnabled,\n touchedFields: !isProxyEnabled,\n isValidating: !isProxyEnabled,\n isValid: !isProxyEnabled,\n errors: !isProxyEnabled,\n });\n const formStateRef = React.useRef(formState);\n\n contextRef.current = context;\n resolverRef.current = resolver;\n\n const getIsValid = () =>\n (formStateRef.current.isValid =\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\n isEmptyObject(formStateRef.current.errors));\n\n const shouldRenderBaseOnError = React.useCallback(\n (\n name: InternalFieldName,\n error?: FieldError,\n shouldRender: boolean | null = false,\n state: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } = {},\n isValid?: boolean,\n isWatched?: boolean,\n ): boolean | void => {\n let shouldReRender =\n shouldRender ||\n isErrorStateChanged<TFieldValues>({\n errors: formStateRef.current.errors,\n error,\n name,\n validFields: validFieldsRef.current,\n fieldsWithValidation: fieldsWithValidationRef.current,\n });\n const previousError = get(formStateRef.current.errors, name);\n\n if (error) {\n unset(validFieldsRef.current, name);\n shouldReRender =\n shouldReRender ||\n !previousError ||\n !deepEqual(previousError, error, true);\n set(formStateRef.current.errors, name, error);\n } else {\n if (get(fieldsWithValidationRef.current, name) || resolverRef.current) {\n set(validFieldsRef.current, name, true);\n shouldReRender = shouldReRender || previousError;\n }\n\n unset(formStateRef.current.errors, name);\n }\n\n if (\n (shouldReRender && !isNullOrUndefined(shouldRender)) ||\n !isEmptyObject(state) ||\n isWatched\n ) {\n const updatedFormState = {\n ...state,\n isValid: resolverRef.current ? !!isValid : getIsValid(),\n errors: formStateRef.current.errors,\n };\n\n formStateRef.current = {\n ...formStateRef.current,\n ...updatedFormState,\n };\n\n formStateSubjectRef.current.next(isWatched ? {} : updatedFormState);\n }\n\n formStateSubjectRef.current.next({\n isValidating: false,\n });\n },\n [],\n );\n\n const setFieldValue = React.useCallback(\n (\n name: InternalFieldName,\n rawValue: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n shouldRender?: boolean,\n shouldRegister?: boolean,\n ) => {\n shouldRegister && register(name as Path<TFieldValues>);\n const _f = get(fieldsRef.current, name, {})._f as Field['_f'];\n\n if (_f) {\n const value =\n isWeb && isHTMLElement(_f.ref) && isNullOrUndefined(rawValue)\n ? ''\n : rawValue;\n _f.value = rawValue;\n\n if (isRadioInput(_f.ref)) {\n (_f.refs || []).forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === value),\n );\n } else if (isFileInput(_f.ref) && !isString(value)) {\n _f.ref.files = value as FileList;\n } else if (isMultipleSelect(_f.ref)) {\n [..._f.ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (value as string[]).includes(\n selectRef.value,\n )),\n );\n } else if (isCheckBoxInput(_f.ref) && _f.refs) {\n _f.refs.length > 1\n ? _f.refs.forEach(\n (checkboxRef) =>\n (checkboxRef.checked = Array.isArray(value)\n ? !!(value as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : value === checkboxRef.value),\n )\n : (_f.refs[0].checked = !!value);\n } else {\n _f.ref.value = value;\n }\n\n if (shouldRender) {\n const values = getFieldsValues(fieldsRef);\n set(values, name, rawValue);\n controllerSubjectRef.current.next({\n values: {\n ...defaultValuesRef.current,\n ...values,\n } as DefaultValues<TFieldValues>,\n name,\n });\n }\n\n options.shouldDirty && updateAndGetDirtyState(name, value);\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n }\n },\n [],\n );\n\n const getFormIsDirty: GetFormIsDirty = React.useCallback((name, data) => {\n if (readFormStateRef.current.isDirty) {\n const formValues = getFieldsValues(fieldsRef);\n\n name && data && set(formValues, name, data);\n\n return !deepEqual(formValues, defaultValuesRef.current);\n }\n\n return false;\n }, []);\n\n const updateAndGetDirtyState = React.useCallback(\n (\n name: InternalFieldName,\n inputValue: unknown,\n shouldRender = true,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n if (\n readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields\n ) {\n const isFieldDirty = !deepEqual(\n get(defaultValuesRef.current, name),\n inputValue,\n );\n const isDirtyFieldExist = get(formStateRef.current.dirtyFields, name);\n const previousIsDirty = formStateRef.current.isDirty;\n\n isFieldDirty\n ? set(formStateRef.current.dirtyFields, name, true)\n : unset(formStateRef.current.dirtyFields, name);\n\n formStateRef.current.isDirty = getFormIsDirty();\n\n const state = {\n isDirty: formStateRef.current.isDirty,\n dirtyFields: formStateRef.current.dirtyFields,\n };\n\n const isChanged =\n (readFormStateRef.current.isDirty &&\n previousIsDirty !== state.isDirty) ||\n (readFormStateRef.current.dirtyFields &&\n isDirtyFieldExist !== get(formStateRef.current.dirtyFields, name));\n\n isChanged && shouldRender && formStateSubjectRef.current.next(state);\n\n return isChanged ? state : {};\n }\n\n return {};\n },\n [],\n );\n\n const executeValidation = React.useCallback(\n async (\n name: InternalFieldName,\n skipReRender?: boolean | null,\n ): Promise<boolean> => {\n const error = (\n await validateField(\n get(fieldsRef.current, name) as Field,\n isValidateAllFieldCriteria,\n )\n )[name];\n\n shouldRenderBaseOnError(name, error, skipReRender);\n\n return isUndefined(error);\n },\n [isValidateAllFieldCriteria],\n );\n\n const executeSchemaOrResolverValidation = React.useCallback(\n async (\n names: InternalFieldName[],\n currentNames: FieldName<TFieldValues>[] = [],\n ) => {\n const { errors } = await resolverRef.current!(\n getFieldsValues(fieldsRef, defaultValuesRef),\n contextRef.current,\n {\n criteriaMode,\n names: currentNames,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(formStateRef.current.errors, name, error)\n : unset(formStateRef.current.errors, name);\n }\n\n return errors;\n },\n [criteriaMode],\n );\n\n const validateForm = async (fieldsRef: FieldRefs) => {\n for (const name in fieldsRef) {\n const field = fieldsRef[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f) {\n const fieldError = await validateField(\n field,\n isValidateAllFieldCriteria,\n );\n\n if (fieldError[_f.name]) {\n set(formStateRef.current.errors, _f.name, fieldError[_f.name]);\n unset(validFieldsRef.current, _f.name);\n } else if (get(fieldsWithValidationRef.current, _f.name)) {\n set(validFieldsRef.current, _f.name, true);\n unset(formStateRef.current.errors, _f.name);\n }\n }\n\n current && (await validateForm(current));\n }\n }\n };\n\n const trigger: UseFormTrigger<TFieldValues> = React.useCallback(\n async (name) => {\n const fields = isUndefined(name)\n ? Object.keys(fieldsRef.current)\n : Array.isArray(name)\n ? name\n : [name];\n let isValid;\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n isValid = isEmptyObject(\n await executeSchemaOrResolverValidation(\n fields,\n isUndefined(name)\n ? undefined\n : (fields as FieldName<TFieldValues>[]),\n ),\n );\n } else {\n isUndefined(name)\n ? await validateForm(fieldsRef.current)\n : await Promise.all(\n fields.map(async (data) => await executeValidation(data, null)),\n );\n }\n\n formStateSubjectRef.current.next({\n errors: formStateRef.current.errors,\n isValidating: false,\n isValid: resolverRef.current ? isValid : getIsValid(),\n });\n },\n [executeSchemaOrResolverValidation, executeValidation],\n );\n\n const setInternalValues = React.useCallback(\n (\n name: FieldPath<TFieldValues>,\n value: UnpackNestedValue<\n PathValue<TFieldValues, FieldPath<TFieldValues>>\n >,\n options: SetValueConfig,\n ) =>\n Object.entries(value).forEach(([inputKey, inputValue]) => {\n const fieldName = `${name}.${inputKey}` as Path<TFieldValues>;\n const field = get(fieldsRef.current, fieldName);\n\n field && !field._f\n ? setInternalValues(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n )\n : setFieldValue(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n true,\n !field,\n );\n }),\n [trigger],\n );\n\n const isFieldWatched = (name: FieldPath<TFieldValues>) =>\n isWatchAllRef.current ||\n watchFieldsRef.current.has(name) ||\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\n\n const updateValueAndGetDefault = (name: InternalFieldName) => {\n let defaultValue;\n const field = get(fieldsRef.current, name) as Field;\n\n if (\n field &&\n (!isEmptyObject(defaultValuesRef.current) || !isUndefined(field._f.value))\n ) {\n defaultValue = isUndefined(field._f.value)\n ? get(defaultValuesRef.current, name)\n : field._f.value;\n\n if (!isUndefined(defaultValue)) {\n setFieldValue(name, defaultValue);\n }\n }\n\n return defaultValue;\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n isMountedRef.current = true;\n const field = get(fieldsRef.current, name);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n if (isFieldArray) {\n fieldArraySubjectRef.current.next({\n fields: value,\n name,\n isReset: true,\n });\n\n if (\n (readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields) &&\n options.shouldDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n value,\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n formStateSubjectRef.current.next({\n dirtyFields: formStateRef.current.dirtyFields,\n isDirty: getFormIsDirty(name, value),\n });\n }\n\n !(value as []).length &&\n set(fieldsRef.current, name, []) &&\n set(fieldArrayDefaultValuesRef.current, name, []);\n }\n\n (field && !field._f) || isFieldArray\n ? setInternalValues(name, value, isFieldArray ? {} : options)\n : setFieldValue(name, value, options, true, !field);\n\n isFieldWatched(name) && formStateSubjectRef.current.next({});\n watchSubjectRef.current.next({ name, value });\n };\n\n const handleChange: ChangeHandler = React.useCallback(\n async ({ type, target, target: { value, type: inputType } }) => {\n let name = (target as Ref)!.name;\n let error;\n let isValid;\n const field = get(fieldsRef.current, name) as Field;\n\n if (field) {\n const inputValue = inputType ? getFieldValue(field) : value;\n const isBlurEvent = type === EVENTS.BLUR;\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = getValidationModes(reValidateMode);\n const shouldSkipValidation = skipValidation({\n isBlurEvent,\n isTouched: !!get(formStateRef.current.touchedFields, name),\n isSubmitted: formStateRef.current.isSubmitted,\n isReValidateOnBlur,\n isReValidateOnChange,\n ...validationMode,\n });\n const isWatched =\n !isBlurEvent && isFieldWatched(name as FieldPath<TFieldValues>);\n\n if (!isUndefined(inputValue)) {\n field._f.value = inputValue;\n }\n\n const state = updateAndGetDirtyState(name, field._f.value, false);\n\n if (isBlurEvent && !get(formStateRef.current.touchedFields, name)) {\n set(formStateRef.current.touchedFields, name, true);\n state.touchedFields = formStateRef.current.touchedFields;\n }\n\n let shouldRender = !isEmptyObject(state) || isWatched;\n\n if (shouldSkipValidation) {\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n return (\n shouldRender &&\n formStateSubjectRef.current.next(isWatched ? {} : state)\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n const { errors } = await resolverRef.current(\n getFieldsValues(fieldsRef, defaultValuesRef),\n contextRef.current,\n {\n criteriaMode,\n fields: getFields([name], fieldsRef.current),\n names: [name as FieldName<TFieldValues>],\n },\n );\n const previousFormIsValid = formStateRef.current.isValid;\n error = get(errors, name);\n\n if (isCheckBoxInput(target as Ref) && !error) {\n const parentNodeName = getNodeParentName(name);\n const currentError = get(errors, parentNodeName, {});\n currentError.type && currentError.message && (error = currentError);\n\n if (\n currentError ||\n get(formStateRef.current.errors, parentNodeName)\n ) {\n name = parentNodeName;\n }\n }\n\n isValid = isEmptyObject(errors);\n\n previousFormIsValid !== isValid && (shouldRender = true);\n } else {\n error = (await validateField(field, isValidateAllFieldCriteria))[\n name\n ];\n }\n\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n shouldRenderBaseOnError(\n name,\n error,\n shouldRender,\n state,\n isValid,\n isWatched,\n );\n }\n },\n [],\n );\n\n const getValues: UseFormGetValues<TFieldValues> = (\n fieldNames?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[],\n ) => {\n const values = isMountedRef.current\n ? getFieldsValues(fieldsRef, defaultValuesRef)\n : defaultValuesRef.current;\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames as InternalFieldName)\n : fieldNames.map((name) => get(values, name as InternalFieldName));\n };\n\n const updateIsValid = React.useCallback(\n async (values = {}) => {\n const previousIsValid = formStateRef.current.isValid;\n\n if (resolver) {\n const { errors } = await resolverRef.current!(\n {\n ...getFieldsValues(fieldsRef, defaultValuesRef),\n ...values,\n },\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.isValid = isEmptyObject(errors);\n } else {\n getIsValid();\n }\n\n previousIsValid !== formStateRef.current.isValid &&\n formStateSubjectRef.current.next({\n isValid: formStateRef.current.isValid,\n });\n },\n [criteriaMode],\n );\n\n const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n name &&\n (Array.isArray(name) ? name : [name]).forEach((inputName) =>\n unset(formStateRef.current.errors, inputName),\n );\n\n formStateSubjectRef.current.next({\n errors: name ? formStateRef.current.errors : {},\n });\n };\n\n const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n const ref = (\n ((get(fieldsRef.current, name) as Field) || { _f: {} })._f || {}\n ).ref;\n\n set(formStateRef.current.errors, name, {\n ...error,\n ref,\n });\n\n formStateSubjectRef.current.next({\n errors: formStateRef.current.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watchInternal: WatchInternal<TFieldValues> = React.useCallback(\n (fieldNames, defaultValue, isGlobal) => {\n const isArrayNames = Array.isArray(fieldNames);\n const fieldValues = isMountedRef.current\n ? getValues()\n : isUndefined(defaultValue)\n ? defaultValuesRef.current\n : isArrayNames\n ? defaultValue || {}\n : { [fieldNames as string]: defaultValue };\n\n if (isUndefined(fieldNames)) {\n isGlobal && (isWatchAllRef.current = true);\n return fieldValues;\n }\n\n const result = [];\n\n for (const fieldName of isArrayNames ? fieldNames : [fieldNames]) {\n isGlobal && watchFieldsRef.current.add(fieldName as string);\n result.push(get(fieldValues, fieldName as string));\n }\n\n return isArrayNames ? result : result[0];\n },\n [],\n );\n\n const watch: UseFormWatch<TFieldValues> = (\n fieldName?:\n | FieldPath<TFieldValues>\n | FieldPath<TFieldValues>[]\n | WatchObserver<TFieldValues>,\n defaultValue?: unknown,\n ) =>\n isFunction(fieldName)\n ? watchSubjectRef.current.subscribe({\n next: (info) =>\n fieldName(\n watchInternal(\n undefined,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ) as UnpackNestedValue<TFieldValues>,\n info,\n ),\n })\n : watchInternal(\n fieldName as string | string[],\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const inputName of name\n ? Array.isArray(name)\n ? name\n : [name]\n : Object.keys(fieldsNamesRef.current)) {\n fieldsNamesRef.current.delete(inputName);\n fieldArrayNamesRef.current.delete(inputName);\n\n if (get(fieldsRef.current, inputName) as Field) {\n if (!options.keepIsValid) {\n unset(fieldsWithValidationRef.current, inputName);\n unset(validFieldsRef.current, inputName);\n }\n !options.keepError && unset(formStateRef.current.errors, inputName);\n !options.keepValue && unset(fieldsRef.current, inputName);\n !options.keepDirty &&\n unset(formStateRef.current.dirtyFields, inputName);\n !options.keepTouched &&\n unset(formStateRef.current.touchedFields, inputName);\n !options.keepDefaultValue && unset(defaultValuesRef.current, inputName);\n\n watchSubjectRef.current.next({\n name: inputName,\n });\n }\n }\n\n formStateSubjectRef.current.next({\n ...formStateRef.current,\n ...(!options.keepDirty ? {} : { isDirty: getFormIsDirty() }),\n ...(resolverRef.current ? {} : { isValid: getIsValid() }),\n });\n\n if (!options.keepIsValid) {\n updateIsValid();\n }\n };\n\n const registerFieldRef = (\n name: InternalFieldName,\n ref: HTMLInputElement,\n options?: RegisterOptions,\n ): ((name: InternalFieldName) => void) | void => {\n let field = get(fieldsRef.current, name) as Field;\n\n if (field) {\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n\n if (\n (isRadioOrCheckbox\n ? Array.isArray(field._f.refs) &&\n compact(field._f.refs).find(\n (option) => ref.value === option.value && option === ref,\n )\n : ref === field._f.ref) ||\n !field ||\n (isWeb && isHTMLElement(field._f.ref) && !isHTMLElement(ref))\n ) {\n return;\n }\n\n field = {\n _f: isRadioOrCheckbox\n ? {\n ...field._f,\n refs: [\n ...compact(field._f.refs || []).filter(\n (ref) => isHTMLElement(ref) && document.contains(ref),\n ),\n ref,\n ],\n ref: { type: ref.type, name },\n }\n : {\n ...field._f,\n ref,\n },\n };\n\n set(fieldsRef.current, name, field);\n\n const defaultValue = updateValueAndGetDefault(name);\n\n if (\n isRadioOrCheckbox && Array.isArray(defaultValue)\n ? !deepEqual(get(fieldsRef.current, name)._f.value, defaultValue)\n : isUndefined(get(fieldsRef.current, name)._f.value)\n ) {\n get(fieldsRef.current, name)._f.value = getFieldValue(\n get(fieldsRef.current, name),\n );\n }\n\n if (options) {\n if (\n !validationMode.isOnSubmit &&\n field &&\n readFormStateRef.current.isValid\n ) {\n validateField(field, isValidateAllFieldCriteria).then((error) => {\n isEmptyObject(error)\n ? set(validFieldsRef.current, name, true)\n : unset(validFieldsRef.current, name);\n\n formStateRef.current.isValid &&\n !isEmptyObject(error) &&\n setFormState({ ...formStateRef.current, isValid: getIsValid() });\n });\n }\n }\n }\n };\n\n const register: UseFormRegister<TFieldValues> = React.useCallback(\n (name, options) => {\n const isInitialRegister = !get(fieldsRef.current, name);\n\n set(fieldsRef.current, name, {\n _f: {\n ...(isInitialRegister\n ? { ref: { name } }\n : {\n ref: (get(fieldsRef.current, name)._f || {}).ref,\n ...get(fieldsRef.current, name)._f,\n }),\n name,\n ...options,\n },\n });\n options && set(fieldsWithValidationRef.current, name, true);\n fieldsNamesRef.current.add(name);\n\n isInitialRegister && updateValueAndGetDefault(name);\n\n return isWindowUndefined\n ? ({ name: name as InternalFieldName } as UseFormRegisterReturn)\n : {\n name,\n onChange: handleChange,\n onBlur: handleChange,\n ref: (ref: HTMLInputElement | null) =>\n ref && registerFieldRef(name, ref, options),\n };\n },\n [defaultValuesRef.current],\n );\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> = React.useCallback(\n (onValid, onInvalid) => async (e) => {\n if (e && e.preventDefault) {\n e.preventDefault();\n e.persist();\n }\n let fieldValues = {\n ...defaultValuesRef.current,\n ...getFieldsValues(fieldsRef, defaultValuesRef),\n };\n\n formStateSubjectRef.current.next({\n isSubmitting: true,\n });\n\n try {\n if (resolverRef.current) {\n const { errors, values } = await resolverRef.current(\n fieldValues,\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.errors = errors;\n fieldValues = values;\n } else {\n await validateForm(fieldsRef.current);\n }\n\n if (\n isEmptyObject(formStateRef.current.errors) &&\n Object.keys(formStateRef.current.errors).every((name) =>\n get(fieldValues, name),\n )\n ) {\n formStateSubjectRef.current.next({\n errors: {},\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n onInvalid && (await onInvalid(formStateRef.current.errors, e));\n shouldFocusError &&\n focusFieldBy(\n fieldsRef.current,\n (key: string) => get(formStateRef.current.errors, key),\n fieldsNamesRef.current,\n );\n }\n } finally {\n formStateRef.current.isSubmitted = true;\n formStateSubjectRef.current.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(formStateRef.current.errors),\n submitCount: formStateRef.current.submitCount + 1,\n errors: formStateRef.current.errors,\n });\n }\n },\n [shouldFocusError, isValidateAllFieldCriteria, criteriaMode],\n );\n\n const resetFromState = React.useCallback(\n ({\n keepErrors,\n keepDirty,\n keepIsSubmitted,\n keepTouched,\n keepIsValid,\n keepSubmitCount,\n }: KeepStateOptions) => {\n if (!keepIsValid) {\n validFieldsRef.current = {};\n fieldsWithValidationRef.current = {};\n }\n\n watchFieldsRef.current = new Set();\n isWatchAllRef.current = false;\n\n formStateSubjectRef.current.next({\n submitCount: keepSubmitCount ? formStateRef.current.submitCount : 0,\n isDirty: keepDirty ? formStateRef.current.isDirty : false,\n isSubmitted: keepIsSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: keepIsValid\n ? formStateRef.current.isValid\n : !validationMode.isOnSubmit,\n dirtyFields: keepDirty ? formStateRef.current.dirtyFields : {},\n touchedFields: keepTouched ? formStateRef.current.touchedFields : {},\n errors: keepErrors ? formStateRef.current.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n },\n [],\n );\n\n const reset: UseFormReset<TFieldValues> = (values, keepStateOptions = {}) => {\n const updatedValues = values || defaultValuesRef.current;\n\n if (isWeb && !keepStateOptions.keepValues) {\n for (const field of Object.values(fieldsRef.current)) {\n if (field && field._f) {\n const inputRef = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(inputRef)) {\n try {\n inputRef.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n }\n\n !keepStateOptions.keepDefaultValues &&\n (defaultValuesRef.current = { ...updatedValues });\n\n if (!keepStateOptions.keepValues) {\n fieldsRef.current = {};\n\n controllerSubjectRef.current.next({\n values: { ...updatedValues },\n });\n\n watchSubjectRef.current.next({\n value: { ...updatedValues },\n });\n\n fieldArraySubjectRef.current.next({\n fields: { ...updatedValues },\n isReset: true,\n });\n }\n\n resetFromState(keepStateOptions);\n };\n\n React.useEffect(() => {\n isMountedRef.current = true;\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next(formState: Partial<FormState<TFieldValues>> = {}) {\n if (shouldRenderFormState(formState, readFormStateRef.current, true)) {\n formStateRef.current = {\n ...formStateRef.current,\n ...formState,\n };\n setFormState(formStateRef.current);\n }\n },\n });\n\n const useFieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next(state) {\n if (state.fields && state.name && readFormStateRef.current.isValid) {\n const values = getFieldsValues(fieldsRef);\n set(values, state.name, state.fields);\n updateIsValid(values);\n }\n },\n });\n\n resolverRef.current && readFormStateRef.current.isValid && updateIsValid();\n\n return () => {\n watchSubjectRef.current.unsubscribe();\n formStateSubscription.unsubscribe();\n useFieldArraySubscription.unsubscribe();\n };\n }, []);\n\n return {\n control: React.useMemo(\n () => ({\n register,\n isWatchAllRef,\n watchFieldsRef,\n getFormIsDirty,\n formStateSubjectRef,\n fieldArraySubjectRef,\n controllerSubjectRef,\n watchSubjectRef,\n watchInternal,\n fieldsRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayNamesRef,\n readFormStateRef,\n formStateRef,\n defaultValuesRef,\n fieldArrayDefaultValuesRef,\n }),\n [],\n ),\n formState: getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState,\n readFormStateRef,\n ),\n trigger,\n register,\n handleSubmit,\n watch: React.useCallback(watch, []),\n setValue: React.useCallback(setValue, [setInternalValues]),\n getValues: React.useCallback(getValues, []),\n reset: React.useCallback(reset, []),\n clearErrors: React.useCallback(clearErrors, []),\n unregister: React.useCallback(unregister, []),\n setError: React.useCallback(setError, []),\n };\n}\n","import * as React from 'react';\n\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport {\n Control,\n DeepPartial,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues\n>(props: {\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): UnpackNestedValue<DeepPartial<TFieldValues>>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>(props: {\n name: TName;\n defaultValue?: FieldPathValue<TFieldValues, TName>;\n control?: Control<TFieldValues>;\n}): FieldPathValue<TFieldValues, TName>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues>[] = FieldPath<TFieldValues>[]\n>(props: {\n name: TName;\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): FieldPathValues<TFieldValues, TName>;\nexport function useWatch<TFieldValues>(props?: UseWatchProps<TFieldValues>) {\n const { control, name, defaultValue } = props || {};\n const methods = useFormContext();\n\n const { watchInternal, watchSubjectRef } = control || methods.control;\n const [value, updateValue] = React.useState<unknown>(\n isUndefined(defaultValue)\n ? watchInternal(name as InternalFieldName)\n : defaultValue,\n );\n\n React.useEffect(() => {\n watchInternal(name as InternalFieldName);\n\n const watchSubscription = watchSubjectRef.current.subscribe({\n next: ({ name: inputName, value }) =>\n (!name ||\n !inputName ||\n (Array.isArray(name) ? name : [name]).some(\n (fieldName) =>\n inputName &&\n fieldName &&\n inputName.startsWith(fieldName as InternalFieldName),\n )) &&\n updateValue(\n isString(inputName) && name === inputName && !isUndefined(value)\n ? value\n : watchInternal(\n name as string,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n ),\n });\n\n return () => watchSubscription.unsubscribe();\n }, []);\n\n return value;\n}\n"],"names":["React","getFieldArrayParentName","append","appendAt","prepend","prependAt","insert","insertAt","isCheckBox"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";function e(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}Object.defineProperty(exports,"__esModule",{value:!0});var r=e(require("react")),t=e=>"checkbox"===e.type,n=e=>null==e;const s=e=>"object"==typeof e;var c=e=>!n(e)&&!Array.isArray(e)&&s(e)&&!(e instanceof Date),u=e=>e.substring(0,e.search(/.\d/))||e,i=e=>e.filter(Boolean),a=e=>void 0===e,l=(e={},r,t)=>{const s=i(r.split(/[,[\].]+?/)).reduce((e,r)=>n(e)?e:e[r],e);return a(s)||s===e?a(e[r])?t:e[r]:s};const o="blur",f="change",d="onBlur",b="onChange",y="onSubmit",g="onTouched",m="all",h="max",v="min",x="maxLength",p="minLength",A="pattern",O="required",j="validate";var V=(e,r)=>{const t=Object.assign({},e);return delete t[r],t};const k=r.createContext(null);k.displayName="RHFContext";const F=()=>r.useContext(k);var R=(e,r,t,n,s=!0)=>e?new Proxy(r,{get:(e,r)=>{if(r in e)return t.current[r]!==m&&(t.current[r]=!s||m),n&&(n.current[r]=!0),e[r]}}):r,S=e=>c(e)&&!Object.keys(e).length,w=(e,r,t)=>S(e)||Object.keys(e).length>=Object.keys(r).length||Object.keys(e).find(e=>r[e]===(!t||m)),_="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;const C=_?"Proxy"in window:"undefined"!=typeof Proxy;function D(e){const t=F(),{formStateRef:n,formStateSubjectRef:s,readFormStateRef:c}=e&&e.control||t.control,[u,i]=r.useState(n.current),a=r.useRef({isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1});return r.useEffect(()=>{const e=s.current.subscribe({next:e=>{w(e,a.current)&&i(Object.assign(Object.assign({},n.current),e))}});return()=>e.unsubscribe()},[]),R(C,u,c,a,!1)}function E({name:e,rules:n,defaultValue:s,control:i}){const d=F(),{defaultValuesRef:b,register:y,fieldsRef:g,fieldArrayNamesRef:m,controllerSubjectRef:h}=i||d.control,{onChange:v,onBlur:x,ref:p}=y(e,n),[A,O]=r.useState(a(l(g.current,e)._f.value)||((e,r)=>[...e].some(e=>u(r)===e))(m.current,e)?a(s)?l(b.current,e):s:l(g.current,e)._f.value),j=D({control:i||d.control});return l(g.current,e)._f.value=A,r.useEffect(()=>{const r=h.current.subscribe({next:r=>(!r.name||e===r.name)&&O(l(r.values,e))});return p({target:A}),()=>r.unsubscribe()},[e]),{field:{onChange:r=>{const n=(e=>c(e)&&e.target?t(e.target)?e.target.checked:e.target.value:e)(r);O(n),v({target:{value:n,name:e},type:f})},onBlur:()=>{x({target:{name:e},type:o})},name:e,value:A,ref:p},formState:j,fieldState:Object.defineProperties({},{invalid:{get:()=>!!l(j.errors,e)},isDirty:{get:()=>!!l(j.dirtyFields,e)},isTouched:{get:()=>!!l(j.touchedFields,e)},error:{get:()=>l(j.errors,e)}})}}var B=(e,r,t,n,s)=>r?Object.assign(Object.assign({},t[e]),{types:Object.assign(Object.assign({},t[e]&&t[e].types?t[e].types:{}),{[n]:s||!0})}):{},N=e=>/^\w*$/.test(e),$=e=>i(e.replace(/["|']|\]/g,"").split(/\.|\[/));function M(e,r,t){let n=-1;const s=N(r)?[r]:$(r),u=s.length,i=u-1;for(;++n<u;){const r=s[n];let u=t;if(n!==i){const t=e[r];u=c(t)||Array.isArray(t)?t:isNaN(+s[n+1])?{}:[]}e[r]=u,e=e[r]}return e}const I=(e,r,t)=>{for(const n of t||Object.keys(e)){const t=l(e,n);if(t){const e=t._f,n=V(t,"_f");if(e&&r(e.name)){if(e.ref.focus&&a(e.ref.focus()))break;if(e.refs){e.refs[0].focus();break}}else c(n)&&I(n,r)}}},P=(e,r={current:{}},t={})=>{for(const n in e.current){const s=e.current[n];if(s){const e=s._f,c=V(s,"_f");M(t,n,e?e.ref.disabled||e.refs&&e.refs.every(e=>e.disabled)?void 0:e.value:Array.isArray(s)?[]:{}),c&&P({current:c},r,t[n])}}return Object.assign(Object.assign({},r.current),t)};var T=()=>{const e="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{const t=(16*Math.random()+e)%16|0;return("x"==r?t:3&t|8).toString(16)})},W=(e=[],r)=>e.map(e=>Object.assign({[r]:e&&e[r]||T()},e)),L=e=>n(e)||!s(e);function q(e,t,n){if(L(e)||L(t)||e instanceof Date||t instanceof Date)return e===t;if(!r.isValidElement(e)){const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length)return!1;for(const s of r){const r=e[s];if(!n||"ref"!==s){const e=t[s];if((c(r)||Array.isArray(r))&&(c(e)||Array.isArray(e))?!q(r,e,n):r!==e)return!1}}}return!0}function H(e,r,t,n,s){let c=-1;for(;++c<e.length;){for(const n in e[c])Array.isArray(e[c][n])?(!t[c]&&(t[c]={}),t[c][n]=[],H(e[c][n],l(r[c]||{},n,[]),t[c][n],t[c],n)):q(l(r[c]||{},n),e[c][n])?M(t[c]||{},n):t[c]=Object.assign(Object.assign({},t[c]),{[n]:!0});n&&!t.length&&delete n[s]}return t}var z=(e,r,t)=>function e(r,t){if(L(r)||L(t))return t;for(const n in t){const s=r[n],u=t[n];try{r[n]=c(s)&&c(u)||Array.isArray(s)&&Array.isArray(u)?e(s,u):u}catch(e){}}return r}(H(e,r,t.slice(0,e.length)),H(r,e,t.slice(0,e.length)));function G(e,r){return[...e,...Array.isArray(r)?r:[r]]}var J=e=>Array.isArray(e)?Array(e.length).fill(void 0):void 0;function K(e,r,t){return[...e.slice(0,r),...Array.isArray(t)?t:[t],...e.slice(r)]}var Q=(e,r,t)=>Array.isArray(e)?(a(e[t])&&(e[t]=void 0),e.splice(t,0,e.splice(r,1)[0]),e):[];function U(e,r){return[...Array.isArray(r)?r:[r],...e]}var X=(e,r)=>a(r)?[]:function(e,r){let t=0;const n=[...e];for(const e of r)n.splice(e-t,1),t++;return i(n).length?n:[]}(e,(Array.isArray(r)?r:[r]).sort((e,r)=>e-r)),Y=(e,r,t)=>{e[r]=[e[t],e[t]=e[r]][0]},Z=e=>"boolean"==typeof e;function ee(e,r){const t=N(r)?[r]:$(r),n=1==t.length?e:function(e,r){const t=r.slice(0,-1).length;let n=0;for(;n<t;)e=a(e)?n++:e[r[n++]];return e}(e,t),s=t[t.length-1];let u;n&&delete n[s];for(let r=0;r<t.slice(0,-1).length;r++){let n,s=-1;const i=t.slice(0,-(r+1)),a=i.length-1;for(r>0&&(u=e);++s<i.length;){const r=i[s];n=n?n[r]:e[r],a===s&&(c(n)&&S(n)||Array.isArray(n)&&!n.filter(e=>c(e)&&!S(e)||Z(e)).length)&&(u?delete u[r]:delete e[r]),u=n}}return e}function re(e,r){const t={};for(const n of e){const e=l(r,n);e&&(N(n)?t[n]=e._f:M(t,n,e._f))}return t}var te=e=>"file"===e.type,ne=e=>"select-multiple"===e.type,se=e=>"radio"===e.type;const ce={value:!1,isValid:!1},ue={value:!0,isValid:!0};var ie=e=>{if(Array.isArray(e)){if(e.length>1){const r=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:r,isValid:!!r.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!a(e[0].attributes.value)?a(e[0].value)||""===e[0].value?ue:{value:e[0].value,isValid:!0}:ue:ce}return ce};const ae={isValid:!1,value:null};var le=e=>Array.isArray(e)?e.reduce((e,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:e,ae):ae;function oe(e){if(e&&e._f){const n=e._f.ref;if(n.disabled)return;return te(n)?n.files:se(n)?le(e._f.refs).value:ne(n)?(r=n.options,[...r].filter(({selected:e})=>e).map(({value:e})=>e)):t(n)?ie(e._f.refs).value:((e,{valueAsNumber:r,valueAsDate:t,setValueAs:n})=>r?""===e?NaN:+e:t?new Date(e):n?n(e):e)(a(n.value)?e._f.ref.value:n.value,e._f)}var r}var fe=e=>"function"==typeof e,de=e=>"string"==typeof e,be=e=>de(e)||r.isValidElement(e),ye=e=>e instanceof RegExp;function ge(e,r,t="validate"){if(be(e)||Z(e)&&!e)return{type:t,message:be(e)?e:"",ref:r}}var me=e=>c(e)&&!ye(e)?e:{value:e,message:""},he=async({_f:{ref:e,refs:r,required:s,maxLength:u,minLength:i,min:a,max:l,pattern:o,validate:f,name:d,value:b,valueAsNumber:y}},g)=>{const m={},V=se(e),k=t(e),F=V||k,R=y&&""===e.value||""===b||Array.isArray(b)&&!b.length,w=B.bind(null,d,g,m),_=(r,t,n,s=x,c=p)=>{const u=r?t:n;m[d]=Object.assign({type:r?s:c,message:u,ref:e},w(r?s:c,u))};if(s&&(!V&&!k&&(R||n(b))||Z(b)&&!b||k&&!ie(r).isValid||V&&!le(r).isValid)){const{value:t,message:n}=be(s)?{value:!!s,message:s}:me(s);if(t&&(m[d]=Object.assign({type:O,message:n,ref:F?(r||[])[0]||{}:e},w(O,n)),!g))return m}if(!(n(a)&&n(l)||""===b)){let r,t;const s=me(l),c=me(a);if(isNaN(b)){const n=e.valueAsDate||new Date(b);de(s.value)&&(r=n>new Date(s.value)),de(c.value)&&(t=n<new Date(c.value))}else{const u=e.valueAsNumber||parseFloat(b);n(s.value)||(r=u>s.value),n(c.value)||(t=u<c.value)}if((r||t)&&(_(!!r,s.message,c.message,h,v),!g))return m}if(de(b)&&!R&&(u||i)){const e=me(u),r=me(i),t=!n(e.value)&&b.length>e.value,s=!n(r.value)&&b.length<r.value;if((t||s)&&(_(t,e.message,r.message),!g))return m}if(de(b)&&o&&!R){const{value:r,message:t}=me(o);if(ye(r)&&!r.test(b)&&(m[d]=Object.assign({type:A,message:t,ref:e},w(A,t)),!g))return m}if(f){const t=F&&r?r[0]:e;if(fe(f)){const e=ge(await f(b),t);if(e&&(m[d]=Object.assign(Object.assign({},e),w(j,e.message)),!g))return m}else if(c(f)){let e={};for(const[r,n]of Object.entries(f)){if(!S(e)&&!g)break;const s=ge(await n(b),t,r);s&&(e=Object.assign(Object.assign({},s),w(r,s.message)),g&&(m[d]=e))}if(!S(e)&&(m[d]=Object.assign({ref:t},e),!g))return m}}return m},ve=e=>({isOnSubmit:!e||e===y,isOnBlur:e===d,isOnChange:e===b,isOnAll:e===m,isOnTouch:e===g}),xe=e=>e instanceof HTMLElement;class pe{constructor(){this.tearDowns=[]}add(e){this.tearDowns.push(e)}unsubscribe(){for(const e of this.tearDowns)e();this.tearDowns=[]}}class Ae{constructor(e,r){this.observer=e,this.closed=!1,r.add(()=>this.closed=!0)}next(e){this.closed||this.observer.next(e)}}class Oe{constructor(){this.observers=[]}next(e){for(const r of this.observers)r.next(e)}subscribe(e){const r=new pe,t=new Ae(e,r);return this.observers.push(t),r}unsubscribe(){this.observers=[]}}const je="undefined"==typeof window;exports.Controller=e=>e.render(E(e)),exports.FormProvider=e=>r.createElement(k.Provider,{value:V(e,"children")},e.children),exports.appendErrors=B,exports.get=l,exports.set=M,exports.useController=E,exports.useFieldArray=({control:e,name:t,keyName:n="id"})=>{const s=F(),c=r.useRef(""),{isWatchAllRef:o,watchFieldsRef:f,getFormIsDirty:d,watchSubjectRef:b,fieldArraySubjectRef:y,fieldArrayNamesRef:g,fieldsRef:m,defaultValuesRef:h,formStateRef:v,formStateSubjectRef:x,readFormStateRef:p,validFieldsRef:A,fieldsWithValidationRef:O,fieldArrayDefaultValuesRef:j}=e||s.control,[k,R]=r.useState(W(l(j.current,u(t))?l(j.current,t,[]):l(h.current,t,[]),n));M(j.current,t,[...k]),g.current.add(t);const S=e=>e.map(e=>V(e||{},n)),w=()=>{const e=l(P(m,h),t,[]);return W(l(j.current,t,[]).map((r,t)=>Object.assign(Object.assign({},r),e[t])),n)},_=(e,r)=>r?a(r.focusIndex)?r.focusName?r.focusName:r.shouldFocus?`${t}.${e}`:"":`${t}.${r.focusIndex}`:`${t}.${e}`,C=(e=[])=>R(W(e,n)),D=e=>!i(l(e,t,[])).length&&ee(e,t),E=(e,r,n=[],s=!0)=>{if(l(m.current,t)){const n=e(l(m.current,t),r.argA,r.argB);s&&M(m.current,t,n)}if(Array.isArray(l(v.current.errors,t))){const n=e(l(v.current.errors,t),r.argA,r.argB);s&&M(v.current.errors,t,n),D(v.current.errors)}if(p.current.touchedFields&&l(v.current.touchedFields,t)){const n=e(l(v.current.touchedFields,t),r.argA,r.argB);s&&M(v.current.touchedFields,t,n),D(v.current.touchedFields)}(p.current.dirtyFields||p.current.isDirty)&&(M(v.current.dirtyFields,t,z(S(n),l(h.current,t,[]),l(v.current.dirtyFields,t,[]))),(e=>{e&&M(v.current.dirtyFields,t,z(S(e),l(h.current,t,[]),l(v.current.dirtyFields,t,[])))})(n),D(v.current.dirtyFields)),p.current.isValid&&(M(A.current,t,e(l(A.current,t,[]),r.argA)),D(A.current),M(O.current,t,e(l(O.current,t,[]),r.argA)),D(O.current)),x.current.next({isDirty:d(t,S(n)),errors:v.current.errors,isValid:v.current.isValid})},B=(e,r=0,n="")=>e.forEach((e,s)=>!L(e)&&Object.entries(e).forEach(([e,c])=>{const u=`${n||t}.${n?s:r+s}.${e}`;Array.isArray(c)?B(c,s,u):M(m.current,u,{_f:{ref:{name:u},name:u,value:c}})}));return r.useEffect(()=>{if(o.current)x.current.next({});else for(const e of f.current)if(t.startsWith(e)){x.current.next({});break}b.current.next({name:t,value:l(P(m,h),t,[])}),c.current&&I(m.current,e=>e.startsWith(c.current)),c.current="",y.current.next({name:t,fields:S([...k])})},[k,t]),r.useEffect(()=>{const e=y.current.subscribe({next({name:e,fields:r,isReset:n}){n&&(ee(m.current,e||t),e?M(j.current,e,r):j.current=r,C(l(j.current,t)))}});return!l(m.current,t)&&M(m.current,t,[]),()=>{j.current=P(m),e.unsubscribe()}},[]),{swap:r.useCallback((e,r)=>{const t=w();Y(t,e,r),E(Y,{argA:e,argB:r},t,!1),C(t)},[t]),move:r.useCallback((e,r)=>{const t=w();Q(t,e,r),C(t),E(Q,{argA:e,argB:r},t,!1)},[t]),prepend:r.useCallback((e,r)=>{const t=Array.isArray(e)?e:[e],n=U(w(),t);C(n),E(U,{argA:J(e)},n),B(t),c.current=_(0,r)},[t]),append:r.useCallback((e,r)=>{const t=Array.isArray(e)?e:[e],n=G(w(),t),s=n.length-t.length;C(n),E(G,{argA:J(e)},n,!1),B(t,s),c.current=_(s,r)},[t]),remove:r.useCallback(e=>{const r=X(w(),e);(e=>{(Array.isArray(e)?e:[e]).forEach(e=>M(m.current,`${t}${a(e)?"":"."+e}`,a(e)?[]:void 0))})(e),C(r),E(X,{argA:e},r)},[t]),insert:r.useCallback((e,r,t)=>{const n=Array.isArray(r)?r:[r],s=K(w(),e,n);C(s),E(K,{argA:e,argB:J(r)},s),B(n,e),c.current=_(e,t)},[t]),fields:k}},exports.useForm=function({mode:e=y,reValidateMode:s=b,resolver:c,context:f,defaultValues:d={},shouldFocusError:g=!0,criteriaMode:h}={}){const v=r.useRef({}),x=r.useRef(new Set),p=r.useRef(new Oe),A=r.useRef(new Oe),O=r.useRef(new Oe),j=r.useRef(new Oe),k=r.useRef({}),F=r.useRef(new Set),D=r.useRef(!1),E=r.useRef({}),B=r.useRef({}),N=r.useRef(d),$=r.useRef(!1),T=r.useRef(f),W=r.useRef(c),L=r.useRef(new Set),H=ve(e),G=h===m,[J,K]=r.useState({isDirty:!1,isValidating:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touchedFields:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!H.isOnSubmit,errors:{}}),Q=r.useRef({isDirty:!C,dirtyFields:!C,touchedFields:!C,isValidating:!C,isValid:!C,errors:!C}),U=r.useRef(J);T.current=f,W.current=c;const X=()=>U.current.isValid=q(B.current,E.current)&&S(U.current.errors),Y=r.useCallback((e,r,t=!1,s={},c,u)=>{let i=t||(({errors:e,name:r,error:t,validFields:n,fieldsWithValidation:s})=>{const c=a(t),u=l(e,r);return c&&!!u||!c&&!q(u,t,!0)||c&&l(s,r)&&!l(n,r)})({errors:U.current.errors,error:r,name:e,validFields:B.current,fieldsWithValidation:E.current});const o=l(U.current.errors,e);if(r?(ee(B.current,e),i=i||!o||!q(o,r,!0),M(U.current.errors,e,r)):((l(E.current,e)||W.current)&&(M(B.current,e,!0),i=i||o),ee(U.current.errors,e)),i&&!n(t)||!S(s)||u){const e=Object.assign(Object.assign({},s),{isValid:W.current?!!c:X(),errors:U.current.errors});U.current=Object.assign(Object.assign({},U.current),e),p.current.next(u?{}:e)}p.current.next({isValidating:!1})},[]),Z=r.useCallback((e,r,s={},c,u)=>{u&&Re(e);const i=l(v.current,e,{})._f;if(i){const u=_&&xe(i.ref)&&n(r)?"":r;if(i.value=r,se(i.ref)?(i.refs||[]).forEach(e=>e.checked=e.value===u):te(i.ref)&&!de(u)?i.ref.files=u:ne(i.ref)?[...i.ref.options].forEach(e=>e.selected=u.includes(e.value)):t(i.ref)&&i.refs?i.refs.length>1?i.refs.forEach(e=>e.checked=Array.isArray(u)?!!u.find(r=>r===e.value):u===e.value):i.refs[0].checked=!!u:i.ref.value=u,c){const t=P(v);M(t,e,r),O.current.next({values:Object.assign(Object.assign({},N.current),t),name:e})}s.shouldDirty&&ue(e,u),s.shouldValidate&&be(e)}},[]),ce=r.useCallback((e,r)=>{if(Q.current.isDirty){const t=P(v);return e&&r&&M(t,e,r),!q(t,N.current)}return!1},[]),ue=r.useCallback((e,r,t=!0)=>{if(Q.current.isDirty||Q.current.dirtyFields){const n=!q(l(N.current,e),r),s=l(U.current.dirtyFields,e),c=U.current.isDirty;n?M(U.current.dirtyFields,e,!0):ee(U.current.dirtyFields,e),U.current.isDirty=ce();const u={isDirty:U.current.isDirty,dirtyFields:U.current.dirtyFields},i=Q.current.isDirty&&c!==u.isDirty||Q.current.dirtyFields&&s!==l(U.current.dirtyFields,e);return i&&t&&p.current.next(u),i?u:{}}return{}},[]),ie=r.useCallback(async(e,r)=>{const t=(await he(l(v.current,e),G))[e];return Y(e,t,r),a(t)},[G]),ae=r.useCallback(async(e,r=[])=>{const{errors:t}=await W.current(P(v,N),T.current,{criteriaMode:h,names:r,fields:re(x.current,v.current)});for(const r of e){const e=l(t,r);e?M(U.current.errors,r,e):ee(U.current.errors,r)}return t},[h]),le=async e=>{for(const r in e){const t=e[r];if(t){const e=t._f,r=V(t,"_f");if(e){const r=await he(t,G);r[e.name]?(M(U.current.errors,e.name,r[e.name]),ee(B.current,e.name)):l(E.current,e.name)&&(M(B.current,e.name,!0),ee(U.current.errors,e.name))}r&&await le(r)}}},be=r.useCallback(async e=>{const r=a(e)?Object.keys(v.current):Array.isArray(e)?e:[e];let t;p.current.next({isValidating:!0}),W.current?t=S(await ae(r,a(e)?void 0:r)):a(e)?await le(v.current):await Promise.all(r.map(async e=>await ie(e,null))),p.current.next({errors:U.current.errors,isValidating:!1,isValid:W.current?t:X()})},[ae,ie]),ye=r.useCallback((e,r,t)=>Object.entries(r).forEach(([r,n])=>{const s=`${e}.${r}`,c=l(v.current,s);c&&!c._f?ye(s,n,t):Z(s,n,t,!0,!c)}),[be]),ge=e=>$.current||F.current.has(e)||F.current.has((e.match(/\w+/)||[])[0]),me=e=>{let r;const t=l(v.current,e);return!t||S(N.current)&&a(t._f.value)||(r=a(t._f.value)?l(N.current,e):t._f.value,a(r)||Z(e,r)),r},pe=r.useCallback(async({type:e,target:r,target:{value:n,type:c}})=>{let i,f,d=r.name;const b=l(v.current,d);if(b){const y=c?oe(b):n,g=e===o,{isOnBlur:m,isOnChange:x}=ve(s),O=(({isOnBlur:e,isOnChange:r,isOnTouch:t,isTouched:n,isReValidateOnBlur:s,isReValidateOnChange:c,isBlurEvent:u,isSubmitted:i,isOnAll:a})=>!a&&(!i&&t?!(n||u):(i?s:e)?!u:!(i?c:r)||u))(Object.assign({isBlurEvent:g,isTouched:!!l(U.current.touchedFields,d),isSubmitted:U.current.isSubmitted,isReValidateOnBlur:m,isReValidateOnChange:x},H)),j=!g&&ge(d);a(y)||(b._f.value=y);const V=ue(d,b._f.value,!1);g&&!l(U.current.touchedFields,d)&&(M(U.current.touchedFields,d,!0),V.touchedFields=U.current.touchedFields);let k=!S(V)||j;if(O)return!g&&A.current.next({name:d,type:e,value:y}),k&&p.current.next(j?{}:V);if(p.current.next({isValidating:!0}),W.current){const{errors:e}=await W.current(P(v,N),T.current,{criteriaMode:h,fields:re([d],v.current),names:[d]}),n=U.current.isValid;if(i=l(e,d),t(r)&&!i){const r=u(d),t=l(e,r,{});t.type&&t.message&&(i=t),(t||l(U.current.errors,r))&&(d=r)}f=S(e),n!==f&&(k=!0)}else i=(await he(b,G))[d];!g&&A.current.next({name:d,type:e,value:y}),Y(d,i,k,V,f,j)}},[]),Ae=e=>{const r=D.current?P(v,N):N.current;return a(e)?r:de(e)?l(r,e):e.map(e=>l(r,e))},Ve=r.useCallback(async(e={})=>{const r=U.current.isValid;if(c){const{errors:r}=await W.current(Object.assign(Object.assign({},P(v,N)),e),T.current,{criteriaMode:h,fields:re(x.current,v.current)});U.current.isValid=S(r)}else X();r!==U.current.isValid&&p.current.next({isValid:U.current.isValid})},[h]),ke=r.useCallback((e,r,t)=>{const n=Array.isArray(e),s=D.current?Ae():a(r)?N.current:n?r||{}:{[e]:r};if(a(e))return t&&($.current=!0),s;const c=[];for(const r of n?e:[e])t&&F.current.add(r),c.push(l(s,r));return n?c:c[0]},[]),Fe=(e,r,n)=>{let s=l(v.current,e);if(s){const c=(e=>se(e)||t(e))(r);if((c?Array.isArray(s._f.refs)&&i(s._f.refs).find(e=>r.value===e.value&&e===r):r===s._f.ref)||!s||_&&xe(s._f.ref)&&!xe(r))return;s={_f:c?Object.assign(Object.assign({},s._f),{refs:[...i(s._f.refs||[]).filter(e=>xe(e)&&document.contains(e)),r],ref:{type:r.type,name:e}}):Object.assign(Object.assign({},s._f),{ref:r})},M(v.current,e,s);const u=me(e);(c&&Array.isArray(u)?!q(l(v.current,e)._f.value,u):a(l(v.current,e)._f.value))&&(l(v.current,e)._f.value=oe(l(v.current,e))),n&&!H.isOnSubmit&&s&&Q.current.isValid&&he(s,G).then(r=>{S(r)?M(B.current,e,!0):ee(B.current,e),U.current.isValid&&!S(r)&&K(Object.assign(Object.assign({},U.current),{isValid:X()}))})}},Re=r.useCallback((e,r)=>{const t=!l(v.current,e);return M(v.current,e,{_f:Object.assign(Object.assign(Object.assign({},t?{ref:{name:e}}:Object.assign({ref:(l(v.current,e)._f||{}).ref},l(v.current,e)._f)),{name:e}),r)}),r&&M(E.current,e,!0),x.current.add(e),t&&me(e),je?{name:e}:{name:e,onChange:pe,onBlur:pe,ref:t=>t&&Fe(e,t,r)}},[N.current]),Se=r.useCallback((e,r)=>async t=>{t&&t.preventDefault&&(t.preventDefault(),t.persist());let n=Object.assign(Object.assign({},N.current),P(v,N));p.current.next({isSubmitting:!0});try{if(W.current){const{errors:e,values:r}=await W.current(n,T.current,{criteriaMode:h,fields:re(x.current,v.current)});U.current.errors=e,n=r}else await le(v.current);S(U.current.errors)&&Object.keys(U.current.errors).every(e=>l(n,e))?(p.current.next({errors:{},isSubmitting:!0}),await e(n,t)):(r&&await r(U.current.errors,t),g&&I(v.current,e=>l(U.current.errors,e),x.current))}finally{U.current.isSubmitted=!0,p.current.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:S(U.current.errors),submitCount:U.current.submitCount+1,errors:U.current.errors})}},[g,G,h]),we=r.useCallback(({keepErrors:e,keepDirty:r,keepIsSubmitted:t,keepTouched:n,keepIsValid:s,keepSubmitCount:c})=>{s||(B.current={},E.current={}),F.current=new Set,$.current=!1,p.current.next({submitCount:c?U.current.submitCount:0,isDirty:!!r&&U.current.isDirty,isSubmitted:!!t&&U.current.isSubmitted,isValid:s?U.current.isValid:!H.isOnSubmit,dirtyFields:r?U.current.dirtyFields:{},touchedFields:n?U.current.touchedFields:{},errors:e?U.current.errors:{},isSubmitting:!1,isSubmitSuccessful:!1})},[]);return r.useEffect(()=>{D.current=!0;const e=p.current.subscribe({next(e={}){w(e,Q.current,!0)&&(U.current=Object.assign(Object.assign({},U.current),e),K(U.current))}}),r=j.current.subscribe({next(e){if(e.fields&&e.name&&Q.current.isValid){const r=P(v);M(r,e.name,e.fields),Ve(r)}}});return W.current&&Q.current.isValid&&Ve(),()=>{A.current.unsubscribe(),e.unsubscribe(),r.unsubscribe()}},[]),{control:r.useMemo(()=>({register:Re,isWatchAllRef:$,watchFieldsRef:F,getFormIsDirty:ce,formStateSubjectRef:p,fieldArraySubjectRef:j,controllerSubjectRef:O,watchSubjectRef:A,watchInternal:ke,fieldsRef:v,validFieldsRef:B,fieldsWithValidationRef:E,fieldArrayNamesRef:L,readFormStateRef:Q,formStateRef:U,defaultValuesRef:N,fieldArrayDefaultValuesRef:k}),[]),formState:R(C,J,Q),trigger:be,register:Re,handleSubmit:Se,watch:r.useCallback((e,r)=>fe(e)?A.current.subscribe({next:t=>e(ke(void 0,r),t)}):ke(e,r,!0),[]),setValue:r.useCallback((e,r,t={})=>{D.current=!0;const n=l(v.current,e),s=L.current.has(e);s&&(j.current.next({fields:r,name:e,isReset:!0}),(Q.current.isDirty||Q.current.dirtyFields)&&t.shouldDirty&&(M(U.current.dirtyFields,e,z(r,l(N.current,e,[]),l(U.current.dirtyFields,e,[]))),p.current.next({dirtyFields:U.current.dirtyFields,isDirty:ce(e,r)})),!r.length&&M(v.current,e,[])&&M(k.current,e,[])),n&&!n._f||s?ye(e,r,s?{}:t):Z(e,r,t,!0,!n),ge(e)&&p.current.next({}),A.current.next({name:e,value:r})},[ye]),getValues:r.useCallback(Ae,[]),reset:r.useCallback((e,r={})=>{const t=e||N.current;if(_&&!r.keepValues)for(const e of Object.values(v.current))if(e&&e._f){const r=Array.isArray(e._f.refs)?e._f.refs[0]:e._f.ref;if(xe(r))try{r.closest("form").reset();break}catch(e){}}!r.keepDefaultValues&&(N.current=Object.assign({},t)),r.keepValues||(v.current={},O.current.next({values:Object.assign({},t)}),A.current.next({value:Object.assign({},t)}),j.current.next({fields:Object.assign({},t),isReset:!0})),we(r)},[]),clearErrors:r.useCallback(e=>{e&&(Array.isArray(e)?e:[e]).forEach(e=>ee(U.current.errors,e)),p.current.next({errors:e?U.current.errors:{}})},[]),unregister:r.useCallback((e,r={})=>{for(const t of e?Array.isArray(e)?e:[e]:Object.keys(x.current))x.current.delete(t),L.current.delete(t),l(v.current,t)&&(r.keepIsValid||(ee(E.current,t),ee(B.current,t)),!r.keepError&&ee(U.current.errors,t),!r.keepValue&&ee(v.current,t),!r.keepDirty&&ee(U.current.dirtyFields,t),!r.keepTouched&&ee(U.current.touchedFields,t),!r.keepDefaultValue&&ee(N.current,t),A.current.next({name:t}));p.current.next(Object.assign(Object.assign(Object.assign({},U.current),r.keepDirty?{isDirty:ce()}:{}),W.current?{}:{isValid:X()})),r.keepIsValid||Ve()},[]),setError:r.useCallback((e,r,t)=>{const n=((l(v.current,e)||{_f:{}})._f||{}).ref;M(U.current.errors,e,Object.assign(Object.assign({},r),{ref:n})),p.current.next({errors:U.current.errors,isValid:!1}),t&&t.shouldFocus&&n&&n.focus&&n.focus()},[])}},exports.useFormContext=F,exports.useFormState=D,exports.useWatch=function(e){const{control:t,name:n,defaultValue:s}=e||{},c=F(),{watchInternal:u,watchSubjectRef:i}=t||c.control,[l,o]=r.useState(a(s)?u(n):s);return r.useEffect(()=>{u(n);const e=i.current.subscribe({next:({name:e,value:r})=>(!n||!e||(Array.isArray(n)?n:[n]).some(r=>e&&r&&e.startsWith(r)))&&o(de(e)&&n===e&&!a(r)?r:u(n,s))});return()=>e.unsubscribe()},[]),l};
2
- //# sourceMappingURL=index.cjs.production.min.js.map