react-hook-form 7.21.2 → 7.22.2
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.
- package/CHANGELOG.md +29 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/{index.esm.js → index.esm.mjs} +10 -10
- package/dist/index.esm.mjs.map +1 -0
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/logic/mapCurrentIds.d.ts +1 -1
- package/dist/types/controller.d.ts +1 -1
- package/dist/types/form.d.ts +1 -1
- package/package.json +20 -20
- package/dist/index.esm.js.map +0 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
import
|
1
|
+
import React from 'react';
|
2
2
|
|
3
3
|
var isCheckBoxInput = (element) => element.type === 'checkbox';
|
4
4
|
|
@@ -1314,7 +1314,7 @@ function createFormControl(props = {}) {
|
|
1314
1314
|
: defaultValue));
|
1315
1315
|
return generateWatchOutput(names, _names, fieldValues, isGlobal);
|
1316
1316
|
};
|
1317
|
-
const _getFieldArray = (name) => get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []);
|
1317
|
+
const _getFieldArray = (name) => compact(get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));
|
1318
1318
|
const setFieldValue = (name, value, options = {}) => {
|
1319
1319
|
const field = get(_fields, name);
|
1320
1320
|
let fieldValue = value;
|
@@ -1673,14 +1673,14 @@ function createFormControl(props = {}) {
|
|
1673
1673
|
const reset = (formValues, keepStateOptions = {}) => {
|
1674
1674
|
const updatedValues = formValues || _defaultValues;
|
1675
1675
|
const cloneUpdatedValues = cloneObject(updatedValues);
|
1676
|
-
const values = !isEmptyObject(formValues)
|
1676
|
+
const values = formValues && !isEmptyObject(formValues)
|
1677
1677
|
? cloneUpdatedValues
|
1678
1678
|
: _defaultValues;
|
1679
1679
|
if (!keepStateOptions.keepDefaultValues) {
|
1680
1680
|
_defaultValues = updatedValues;
|
1681
1681
|
}
|
1682
1682
|
if (!keepStateOptions.keepValues) {
|
1683
|
-
if (isWeb) {
|
1683
|
+
if (isWeb && isUndefined(formValues)) {
|
1684
1684
|
for (const name of _names.mount) {
|
1685
1685
|
const field = get(_fields, name);
|
1686
1686
|
if (field && field._f) {
|
@@ -1702,10 +1702,10 @@ function createFormControl(props = {}) {
|
|
1702
1702
|
: {}
|
1703
1703
|
: cloneUpdatedValues;
|
1704
1704
|
_fields = {};
|
1705
|
-
_subjects.
|
1705
|
+
_subjects.array.next({
|
1706
1706
|
values,
|
1707
1707
|
});
|
1708
|
-
_subjects.
|
1708
|
+
_subjects.watch.next({
|
1709
1709
|
values,
|
1710
1710
|
});
|
1711
1711
|
}
|
@@ -1717,6 +1717,9 @@ function createFormControl(props = {}) {
|
|
1717
1717
|
watchAll: false,
|
1718
1718
|
focus: '',
|
1719
1719
|
};
|
1720
|
+
_stateFlags.mount =
|
1721
|
+
!_proxyFormState.isValid || !!keepStateOptions.keepIsValid;
|
1722
|
+
_stateFlags.watch = !!props.shouldUnregister;
|
1720
1723
|
_subjects.state.next({
|
1721
1724
|
submitCount: keepStateOptions.keepSubmitCount
|
1722
1725
|
? _formState.submitCount
|
@@ -1743,9 +1746,6 @@ function createFormControl(props = {}) {
|
|
1743
1746
|
isSubmitting: false,
|
1744
1747
|
isSubmitSuccessful: false,
|
1745
1748
|
});
|
1746
|
-
_stateFlags.mount =
|
1747
|
-
!_proxyFormState.isValid || !!keepStateOptions.keepIsValid;
|
1748
|
-
_stateFlags.watch = !!props.shouldUnregister;
|
1749
1749
|
};
|
1750
1750
|
const setFocus = (name) => {
|
1751
1751
|
const field = get(_fields, name)._f;
|
@@ -1868,4 +1868,4 @@ function useForm(props = {}) {
|
|
1868
1868
|
}
|
1869
1869
|
|
1870
1870
|
export { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };
|
1871
|
-
//# sourceMappingURL=index.esm.
|
1871
|
+
//# sourceMappingURL=index.esm.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.esm.mjs","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isDateObject.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getEventValue.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/convertToArrayPayload.ts","../src/logic/shouldSubscribeByName.ts","../src/useSubscribe.ts","../src/useFormState.ts","../src/utils/isString.ts","../src/logic/generateWatchOutput.ts","../src/utils/isFunction.ts","../src/utils/objectHasFunction.ts","../src/useWatch.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/getFocusFieldName.ts","../src/logic/isWatched.ts","../src/logic/mapCurrentIds.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/append.ts","../src/utils/cloneObject.ts","../src/utils/fillEmptyArray.ts","../src/utils/insert.ts","../src/utils/move.ts","../src/utils/omitKeys.ts","../src/utils/prepend.ts","../src/utils/remove.ts","../src/utils/swap.ts","../src/utils/update.ts","../src/useFieldArray.ts","../src/utils/createSubject.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/utils/getValidationModes.ts","../src/utils/isBoolean.ts","../src/utils/isFileInput.ts","../src/utils/isHTMLElement.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioInput.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/isWeb.ts","../src/utils/live.ts","../src/utils/unset.ts","../src/logic/getDirtyFields.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/getResolverOptions.ts","../src/utils/isRegex.ts","../src/logic/getRuleValue.ts","../src/logic/hasValidation.ts","../src/logic/schemaErrorLookup.ts","../src/logic/skipValidation.ts","../src/logic/unsetEmptyArray.ts","../src/utils/isMessage.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/logic/createFormControl.ts","../src/useForm.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (data: unknown) => data instanceof Date;\n","export default (value: unknown): value is null | undefined => value == null;\n","import isDateObject from './isDateObject';\nimport isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown) => typeof value === 'object';\n\nexport default <T extends object>(value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","export default (name: string) => 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 isObject from './isObject';\nimport isUndefined from './isUndefined';\n\nexport default <T>(obj: T, path: string, defaultValue?: unknown) => {\n if (isObject(obj) && path) {\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 as keyof T])\n ? defaultValue\n : obj[path as keyof T]\n : result;\n }\n\n return undefined;\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 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 React from 'react';\n\nimport omit from './utils/omit';\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst HookFormContext = React.createContext<UseFormReturn | null>(null);\n\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n>(): UseFormReturn<TFieldValues> =>\n React.useContext(HookFormContext) as unknown as UseFormReturn<TFieldValues>;\n\nexport const FormProvider = <\n TFieldValues extends FieldValues,\n TContext extends object = object,\n>(\n props: FormProviderProps<TFieldValues, TContext>,\n) => (\n <HookFormContext.Provider\n value={omit(props, 'children') as unknown as UseFormReturn}\n >\n {props.children}\n </HookFormContext.Provider>\n);\n","import { VALIDATION_MODE } from '../constants';\nimport { FormState, FormStateProxy, ReadFormState } from '../types';\n\nexport default <TFieldValues>(\n formState: FormState<TFieldValues>,\n _proxyFormState: ReadFormState,\n localProxyFormState?: ReadFormState,\n isRoot = true,\n) => {\n function createGetter(prop: keyof FormStateProxy) {\n return () => {\n if (prop in formState) {\n if (_proxyFormState[prop] !== VALIDATION_MODE.all) {\n _proxyFormState[prop] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[prop] = true);\n return formState[prop];\n }\n return undefined;\n };\n }\n\n const result = {} as any as typeof formState;\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: createGetter(key as keyof FormStateProxy),\n });\n }\n\n return result;\n};\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport { ReadFormState } from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport omit from '../utils/omit';\n\nexport default <T extends Record<string, any>, K extends ReadFormState>(\n formStateData: T,\n _proxyFormState: K,\n isRoot?: boolean,\n) => {\n const formState = omit(formStateData, 'name');\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find(\n (key) =>\n _proxyFormState[key as keyof ReadFormState] ===\n (!isRoot || VALIDATION_MODE.all),\n )\n );\n};\n","export default <T>(value: T) => (Array.isArray(value) ? value : [value]);\n","import convertToArrayPayload from '../utils/convertToArrayPayload';\n\nexport default <T extends string | string[] | undefined>(\n name?: T,\n signalName?: string,\n exact?: boolean,\n) =>\n exact && signalName\n ? name === signalName\n : !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some(\n (currentName) =>\n currentName &&\n (currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)),\n );\n","import React from 'react';\n\nimport { Subject, Subscription } from './utils/createSubject';\n\ntype Props<T> = {\n disabled?: boolean;\n subject: Subject<T>;\n callback: (value: T) => void;\n};\n\nexport function useSubscribe<T>(props: Props<T>) {\n const _props = React.useRef(props);\n _props.current = props;\n\n React.useEffect(() => {\n const tearDown = (subscription: Subscription | false) => {\n if (subscription) {\n subscription.unsubscribe();\n }\n };\n\n const subscription =\n !props.disabled &&\n _props.current.subject.subscribe({\n next: _props.current.callback,\n });\n\n return () => tearDown(subscription);\n }, [props.disabled]);\n}\n","import React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\nimport {\n FieldValues,\n InternalFieldName,\n UseFormStateProps,\n UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\n props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n const methods = useFormContext<TFieldValues>();\n const { control = methods.control, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n const _name = React.useRef(name);\n\n _name.current = name;\n\n useSubscribe({\n disabled,\n callback: (value) =>\n shouldSubscribeByName(\n _name.current as InternalFieldName,\n value.name,\n exact,\n ) &&\n shouldRenderFormState(value, _localProxyFormState.current) &&\n updateFormState({\n ...control._formState,\n ...value,\n }),\n subject: control._subjects.state,\n });\n\n return getProxyFormState(\n formState,\n control._proxyFormState,\n _localProxyFormState.current,\n false,\n );\n}\n\nexport { useFormState };\n","export default (value: unknown): value is string => typeof value === 'string';\n","import { FieldValues, InternalFieldName, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default (\n names: string | string[] | undefined,\n _names: Names,\n formValues?: FieldValues,\n isGlobal?: boolean,\n) => {\n const isArray = Array.isArray(names);\n if (isString(names)) {\n isGlobal && _names.watch.add(names as InternalFieldName);\n return get(formValues, names as InternalFieldName);\n }\n\n if (isArray) {\n return names.map(\n (fieldName) => (\n isGlobal && _names.watch.add(fieldName as InternalFieldName),\n get(formValues, fieldName as InternalFieldName)\n ),\n );\n }\n\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import isFunction from './isFunction';\n\nexport default <T>(data: T): boolean => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n","import React from 'react';\n\nimport generateWatchOutput from './logic/generateWatchOutput';\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\nimport isObject from './utils/isObject';\nimport isUndefined from './utils/isUndefined';\nimport objectHasFunction from './utils/objectHasFunction';\nimport {\n Control,\n DeepPartialSkipArrayKey,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n>(props: {\n defaultValue?: UnpackNestedValue<DeepPartialSkipArrayKey<TFieldValues>>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\n exact?: boolean;\n}): UnpackNestedValue<DeepPartialSkipArrayKey<TFieldValues>>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: {\n name: TFieldName;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\n exact?: boolean;\n}): FieldPathValue<TFieldValues, TFieldName>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldNames extends readonly FieldPath<TFieldValues>[] = readonly FieldPath<TFieldValues>[],\n>(props: {\n name: readonly [...TFieldNames];\n defaultValue?: UnpackNestedValue<DeepPartialSkipArrayKey<TFieldValues>>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\n exact?: boolean;\n}): FieldPathValues<TFieldValues, TFieldNames>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldNames extends FieldPath<TFieldValues>[] = FieldPath<TFieldValues>[],\n>(): FieldPathValues<TFieldValues, TFieldNames>;\nexport function useWatch<TFieldValues>(props?: UseWatchProps<TFieldValues>) {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n defaultValue,\n disabled,\n exact,\n } = props || {};\n const _name = React.useRef(name);\n\n _name.current = name;\n\n useSubscribe({\n disabled,\n subject: control._subjects.watch,\n callback: (formState) => {\n if (\n shouldSubscribeByName(\n _name.current as InternalFieldName,\n formState.name,\n exact,\n )\n ) {\n const fieldValues = generateWatchOutput(\n _name.current as InternalFieldName | InternalFieldName[],\n control._names,\n formState.values || control._formValues,\n );\n\n updateValue(\n isUndefined(_name.current) ||\n (isObject(fieldValues) && !objectHasFunction(fieldValues))\n ? { ...fieldValues }\n : Array.isArray(fieldValues)\n ? [...fieldValues]\n : fieldValues,\n );\n }\n },\n });\n\n const [value, updateValue] = React.useState<unknown>(\n isUndefined(defaultValue)\n ? control._getWatch(name as InternalFieldName)\n : defaultValue,\n );\n\n React.useEffect(() => {\n control._removeUnmounted();\n });\n\n return value;\n}\n","import React from 'react';\n\nimport getEventValue from './logic/getEventValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport { EVENTS } from './constants';\nimport {\n Field,\n FieldPath,\n FieldPathValue,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\nimport { useWatch } from './useWatch';\n\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: UseControllerProps<TFieldValues, TName>,\n): UseControllerReturn<TFieldValues, TName> {\n const methods = useFormContext<TFieldValues>();\n const { name, control = methods.control, shouldUnregister } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const value = useWatch({\n control,\n name,\n defaultValue: get(\n control._formValues,\n name,\n get(control._defaultValues, name, props.defaultValue),\n ),\n exact: !isArrayField,\n }) as UnpackNestedValue<FieldPathValue<TFieldValues, TName>>;\n const formState = useFormState({\n control,\n name,\n });\n const _name = React.useRef(name);\n\n _name.current = name;\n\n const registerProps = control.register(name, {\n ...props.rules,\n value,\n });\n\n React.useEffect(() => {\n const updateMounted = (name: InternalFieldName, value: boolean) => {\n const field: Field = get(control._fields, name);\n\n if (field) {\n field._f.mount = value;\n }\n };\n\n updateMounted(name, true);\n\n return () => {\n const _shouldUnregisterField =\n control._options.shouldUnregister || shouldUnregister;\n\n if (\n isArrayField\n ? _shouldUnregisterField && !control._stateFlags.action\n : _shouldUnregisterField\n ) {\n control.unregister(name, { keepDefaultValue: true });\n } else {\n updateMounted(name, false);\n }\n };\n }, [name, control, isArrayField, shouldUnregister]);\n\n return {\n field: {\n onChange: (event) => {\n registerProps.onChange({\n target: {\n value: getEventValue(event),\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n });\n },\n onBlur: () => {\n registerProps.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name as InternalFieldName,\n },\n type: EVENTS.BLUR,\n });\n },\n name,\n value,\n ref: (elm) => {\n const field = get(control._fields, name);\n\n if (elm && field && elm.focus) {\n field._f.ref = {\n focus: () => elm.focus(),\n setCustomValidity: (message: string) =>\n elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity(),\n };\n }\n },\n },\n formState,\n fieldState: {\n invalid: !!get(formState.errors, name),\n isDirty: !!get(formState.dirtyFields, name),\n isTouched: !!get(formState.touchedFields, name),\n error: get(formState.errors, name),\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> | 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 { FieldArrayMethodProps, InternalFieldName } from '../types';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n name: InternalFieldName,\n index: number,\n options: FieldArrayMethodProps = {},\n): string =>\n options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n","import { InternalFieldName, Names } from '../types';\n\nexport default (\n name: InternalFieldName,\n _names: Names,\n isBlurEvent?: boolean,\n) =>\n !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some(\n (watchName) =>\n name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length)),\n ));\n","import React from 'react';\n\nimport { FieldValues } from '../types';\n\nexport default <T, K>(\n values: T[],\n _fieldIds: React.MutableRefObject<K>,\n keyName: string,\n) =>\n values.map((value, index) => {\n const output = _fieldIds.current[index as keyof K];\n\n return {\n ...value,\n ...(output ? { [keyName]: (output as FieldValues)[keyName] } : {}),\n };\n });\n","export 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 { FieldArrayPath, FieldArrayWithId, FieldValues } from '../types';\n\nimport generateId from './generateId';\n\nexport default <\n TFieldArrayValues extends FieldValues = FieldValues,\n TFieldName extends FieldArrayPath<TFieldArrayValues> = FieldArrayPath<TFieldArrayValues>,\n TKeyName extends string = 'id',\n>(\n values: Partial<TFieldArrayValues>[] = [],\n keyName: TKeyName,\n): Partial<FieldArrayWithId<TFieldArrayValues, TFieldName, TKeyName>>[] =>\n values.map((value: Partial<TFieldArrayValues>) => ({\n ...(value[keyName] ? {} : { [keyName]: generateId() }),\n ...value,\n })) as Partial<FieldArrayWithId<TFieldArrayValues, TFieldName, TKeyName>>[];\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function append<T>(data: T[], value: T | T[]): T[] {\n return [...convertToArrayPayload(data), ...convertToArrayPayload(value)];\n}\n","import isFunction from './isFunction';\nimport isObject from './isObject';\n\nexport default function cloneObject<T>(data: T): T {\n let copy: any;\n const isArray = Array.isArray(data);\n\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (data instanceof Set) {\n copy = new Set(data);\n } else if (isArray || isObject(data)) {\n copy = isArray ? [] : {};\n for (const key in data) {\n if (isFunction(data[key])) {\n copy = data;\n break;\n }\n copy[key] = cloneObject(data[key]);\n }\n } else {\n return data;\n }\n\n return copy;\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? value.map(() => undefined) : undefined;\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function insert<T>(data: T[], index: number): (T | undefined)[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value: T | T[],\n): T[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value?: T | T[],\n): (T | undefined)[] {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n","import isUndefined from './isUndefined';\n\nexport default <T>(\n data: (T | undefined)[],\n from: number,\n to: number,\n): (T | undefined)[] => {\n if (Array.isArray(data)) {\n 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","import { FieldArrayWithId } from '../types';\n\nimport omit from './omit';\n\nexport default <T extends Partial<FieldArrayWithId>[]>(\n fields: T,\n keyName: string,\n) => fields.map((field = {}) => omit(field, keyName));\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function prepend<T>(data: T[], value: T | T[]): T[] {\n return [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\n}\n","import compact from './compact';\nimport convertToArrayPayload from './convertToArrayPayload';\nimport isUndefined from './isUndefined';\n\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\n let i = 0;\n const temp = [...data];\n\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n\n return compact(temp).length ? temp : [];\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n isUndefined(index)\n ? []\n : removeAtIndexes(\n data,\n (convertToArrayPayload(index) as number[]).sort((a, b) => a - b),\n );\n","export default <T>(data: T[], indexA: number, indexB: number): void => {\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\n};\n","export default <T>(fieldValues: T[], index: number, value: any) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n","import React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFocusFieldName from './logic/getFocusFieldName';\nimport isWatched from './logic/isWatched';\nimport mapCurrentIds from './logic/mapCurrentIds';\nimport mapIds from './logic/mapId';\nimport appendAt from './utils/append';\nimport cloneObject from './utils/cloneObject';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport moveArrayAt from './utils/move';\nimport omitKeys from './utils/omitKeys';\nimport prependAt from './utils/prepend';\nimport removeArrayAt from './utils/remove';\nimport set from './utils/set';\nimport swapArrayAt from './utils/swap';\nimport updateAt from './utils/update';\nimport {\n FieldArray,\n FieldArrayMethodProps,\n FieldArrayPath,\n FieldArrayWithId,\n FieldErrors,\n FieldPath,\n FieldValues,\n UseFieldArrayProps,\n UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\nexport const useFieldArray = <\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n TKeyName extends string = 'id',\n>(\n props: UseFieldArrayProps<TFieldValues, TFieldArrayName, TKeyName>,\n): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> => {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n keyName = 'id' as TKeyName,\n shouldUnregister,\n } = props;\n const [fields, setFields] = React.useState<\n Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\n >(mapIds(control._getFieldArray(name), keyName));\n const _fieldIds = React.useRef(fields);\n const _name = React.useRef(name);\n const _actioned = React.useRef(false);\n\n _name.current = name;\n _fieldIds.current = fields;\n control._names.array.add(name);\n\n useSubscribe({\n callback: ({ values, name: fieldArrayName }) => {\n if (fieldArrayName === _name.current || !fieldArrayName) {\n setFields(mapIds(get(values, _name.current), keyName));\n }\n },\n subject: control._subjects.array,\n });\n\n const updateValues = React.useCallback(\n <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n >(\n updatedFieldArrayValuesWithKey: T,\n ) => {\n const updatedFieldArrayValues = omitKeys(\n updatedFieldArrayValuesWithKey,\n keyName,\n );\n _actioned.current = true;\n set(control._formValues, name, updatedFieldArrayValues);\n return updatedFieldArrayValues;\n },\n [control, name, keyName],\n );\n\n const append = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValuesWithKey = appendAt(\n mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName),\n mapIds(appendValue, keyName),\n );\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\n control._names.focus = getFocusFieldName(\n name,\n fieldArrayValues.length - 1,\n options,\n );\n\n setFields(updatedFieldArrayValuesWithKey);\n control._updateFieldArray(\n name,\n appendAt,\n {\n argA: fillEmptyArray(value),\n },\n fieldArrayValues,\n );\n };\n\n const prepend = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const updatedFieldArrayValuesWithKey = prependAt(\n mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName),\n mapIds(convertToArrayPayload(cloneObject(value)), keyName),\n );\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\n control._names.focus = getFocusFieldName(name, 0, options);\n\n setFields(updatedFieldArrayValuesWithKey);\n control._updateFieldArray(\n name,\n prependAt,\n {\n argA: fillEmptyArray(value),\n },\n fieldArrayValues,\n );\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValuesWithKey: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(\n mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName),\n index,\n );\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\n\n setFields(updatedFieldArrayValuesWithKey);\n control._updateFieldArray(\n name,\n removeArrayAt,\n {\n argA: index,\n },\n fieldArrayValues,\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 updatedFieldArrayValuesWithKey = insertAt(\n mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName),\n index,\n mapIds(convertToArrayPayload(cloneObject(value)), keyName),\n );\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\n control._names.focus = getFocusFieldName(name, index, options);\n\n setFields(updatedFieldArrayValuesWithKey);\n control._updateFieldArray(\n name,\n insertAt,\n {\n argA: index,\n argB: fillEmptyArray(value),\n },\n fieldArrayValues,\n );\n };\n\n const swap = (indexA: number, indexB: number) => {\n const updatedFieldArrayValuesWithKey = mapCurrentIds(\n control._getFieldArray(name),\n _fieldIds,\n keyName,\n );\n swapArrayAt(updatedFieldArrayValuesWithKey, indexA, indexB);\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\n\n setFields(updatedFieldArrayValuesWithKey);\n control._updateFieldArray(\n name,\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n fieldArrayValues,\n false,\n );\n };\n\n const move = (from: number, to: number) => {\n const updatedFieldArrayValuesWithKey = mapCurrentIds(\n control._getFieldArray(name),\n _fieldIds,\n keyName,\n );\n moveArrayAt(updatedFieldArrayValuesWithKey, from, to);\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\n setFields(updatedFieldArrayValuesWithKey);\n\n control._updateFieldArray(\n name,\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n fieldArrayValues,\n false,\n );\n };\n\n const update = (\n index: number,\n value: Partial<FieldArray<TFieldValues, TFieldArrayName>>,\n ) => {\n const updatedFieldArrayValuesWithKey = mapCurrentIds(\n control._getFieldArray(name),\n _fieldIds,\n keyName,\n );\n const updatedFieldArrayValues = updateAt(\n updatedFieldArrayValuesWithKey,\n index,\n value,\n );\n _fieldIds.current = mapIds<TFieldValues, TFieldArrayName, TKeyName>(\n updatedFieldArrayValues,\n keyName,\n );\n const fieldArrayValues = updateValues(_fieldIds.current);\n\n setFields(_fieldIds.current);\n control._updateFieldArray(\n name,\n updateAt,\n {\n argA: index,\n argB: value,\n },\n fieldArrayValues,\n true,\n false,\n );\n };\n\n const replace = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n ) => {\n const updatedFieldArrayValuesWithKey = mapIds<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n >(convertToArrayPayload(value) as Partial<TFieldValues>[], keyName);\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\n\n setFields(updatedFieldArrayValuesWithKey);\n control._updateFieldArray(\n name,\n () => updatedFieldArrayValuesWithKey,\n {},\n fieldArrayValues,\n true,\n false,\n );\n };\n\n React.useEffect(() => {\n control._stateFlags.action = false;\n\n isWatched(name, control._names) && control._subjects.state.next({});\n\n if (_actioned.current) {\n control._executeSchema([name]).then((result) => {\n const error = get(result.errors, name);\n\n if (error && error.type && !get(control._formState.errors, name)) {\n set(control._formState.errors, name, error);\n control._subjects.state.next({\n errors: control._formState.errors as FieldErrors<TFieldValues>,\n });\n }\n });\n }\n\n control._subjects.watch.next({\n name,\n values: control._formValues,\n });\n\n control._names.focus &&\n focusFieldBy(control._fields, (key: string) =>\n key.startsWith(control._names.focus),\n );\n\n control._names.focus = '';\n\n control._proxyFormState.isValid && control._updateValid();\n }, [fields, name, control, keyName]);\n\n React.useEffect(() => {\n !get(control._formValues, name) && set(control._formValues, name, []);\n\n return () => {\n if (control._options.shouldUnregister || shouldUnregister) {\n control.unregister(name as FieldPath<TFieldValues>);\n }\n };\n }, [name, control, keyName, shouldUnregister]);\n\n return {\n swap: React.useCallback(swap, [updateValues, name, control, keyName]),\n move: React.useCallback(move, [updateValues, name, control, keyName]),\n prepend: React.useCallback(prepend, [updateValues, name, control, keyName]),\n append: React.useCallback(append, [updateValues, name, control, keyName]),\n remove: React.useCallback(remove, [updateValues, name, control, keyName]),\n insert: React.useCallback(insert, [updateValues, name, control, keyName]),\n update: React.useCallback(update, [updateValues, name, control, keyName]),\n replace: React.useCallback(replace, [updateValues, name, control, keyName]),\n fields: fields as FieldArrayWithId<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n >[],\n };\n};\n","import { Noop } from '../types';\n\nexport type Observer<T> = {\n next: (value: T) => void;\n};\n\nexport type Subscription = {\n unsubscribe: Noop;\n};\n\nexport type Subject<T> = {\n readonly observers: Observer<T>[];\n subscribe: (value: Observer<T>) => Subscription;\n unsubscribe: Noop;\n} & Observer<T>;\n\nexport default function createSubject<T>(): Subject<T> {\n let _observers: Observer<T>[] = [];\n\n const next = (value: T) => {\n for (const observer of _observers) {\n observer.next(value);\n }\n };\n\n const subscribe = (observer: Observer<T>): Subscription => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n\n const unsubscribe = () => {\n _observers = [];\n };\n\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n}\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import isObject from '../utils/isObject';\n\nimport isDateObject from './isDateObject';\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(object1: any, object2: any) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!keys2.includes(key)) {\n return false;\n }\n\n if (key !== 'ref') {\n const val2 = object2[key];\n\n if (\n (isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { 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: unknown): value is boolean => typeof value === 'boolean';\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","export default (value: unknown): value is HTMLElement =>\n value instanceof HTMLElement;\n","import { 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 { 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 default typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n","import { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && document.contains(ref);\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 deepEqual from '../utils/deepEqual';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isUndefined from '../utils/isUndefined';\nimport objectHasFunction from '../utils/objectHasFunction';\n\nfunction markFieldsDirty<U>(data: U, fields: Record<string, any> = {}) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n\n return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues<T>(\n data: T,\n formValues: T,\n dirtyFieldsFromValues: any,\n) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n if (\n isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])\n ) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n } else {\n getDirtyFieldsFromDefaultValues(\n data[key],\n isNullOrUndefined(formValues) ? {} : formValues[key],\n dirtyFieldsFromValues[key],\n );\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n\n return dirtyFieldsFromValues;\n}\n\nexport default <T>(defaultValues: T, formValues: T) =>\n getDirtyFieldsFromDefaultValues(\n defaultValues,\n formValues,\n markFieldsDirty(formValues),\n );\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends NativeFieldValue>(\n value: T,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : +value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(_f: Field['_f']) {\n const ref = _f.ref;\n\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n","import {\n CriteriaMode,\n Field,\n FieldName,\n FieldRefs,\n InternalFieldName,\n} from '../types';\nimport { get } from '../utils';\nimport set from '../utils/set';\n\nexport default <TFieldValues>(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n _fields: FieldRefs,\n criteriaMode?: CriteriaMode,\n shouldUseNativeValidation?: boolean | undefined,\n) => {\n const fields: Record<InternalFieldName, Field['_f']> = {};\n\n for (const name of fieldsNames) {\n const field: Field = get(_fields, name);\n\n field && set(fields, name, field._f);\n }\n\n return {\n criteriaMode,\n names: [...fieldsNames] as FieldName<TFieldValues>[],\n fields,\n shouldUseNativeValidation,\n };\n};\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import {\n ValidationRule,\n ValidationValue,\n ValidationValueMessage,\n} from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends ValidationValue>(\n rule?: ValidationRule<T> | ValidationValueMessage<T>,\n) =>\n isUndefined(rule)\n ? undefined\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n","import { Field } from '../types';\n\nexport default (options: Field['_f']) =>\n options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","import { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\nimport isKey from '../utils/isKey';\n\nexport default function schemaErrorLookup(\n errors: FieldErrors,\n _fields: FieldValues,\n name: string,\n): {\n error?: FieldError;\n name: string;\n} {\n const error = get(errors, name);\n\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n\n const names = name.split('.');\n\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n\n names.pop();\n }\n\n return {\n name,\n };\n}\n","export default (\n isBlurEvent: boolean,\n isTouched: boolean,\n isSubmitted: boolean,\n reValidateMode: {\n isOnBlur: boolean;\n isOnChange: boolean;\n },\n mode: Partial<{\n isOnSubmit: boolean;\n isOnBlur: boolean;\n isOnChange: boolean;\n isOnTouch: boolean;\n isOnAll: boolean;\n }>,\n) => {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","import compact from '../utils/compact';\nimport get from '../utils/get';\nimport unset from '../utils/unset';\n\nexport default <T>(ref: T, name: string) =>\n !compact(get(ref, name)).length && unset(ref, name);\n","import 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","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport {\n Field,\n FieldError,\n InternalFieldErrors,\n Message,\n NativeFieldValue,\n} from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport 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 <T extends NativeFieldValue>(\n field: Field,\n inputValue: T,\n validateAllFieldCriteria: boolean,\n shouldUseNativeValidation?: boolean,\n): Promise<InternalFieldErrors> => {\n const {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n valueAsNumber,\n mount,\n disabled,\n } = field._f;\n if (!mount || disabled) {\n return {};\n }\n const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\n const setCustomValidity = (message?: string | boolean) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || ' ');\n inputRef.reportValidity();\n }\n };\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n ((valueAsNumber || isFileInput(ref)) && !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 ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNaN(inputValue as number)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber ||\n parseFloat(inputValue as string);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\n 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 setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if ((maxLength || minLength) && !isEmpty && isString(inputValue)) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue);\n const validateError = getValidateError(result, inputRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateError = getValidateError(\n await validate[key](inputValue),\n inputRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n setCustomValidity(validateError.message);\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n setCustomValidity(true);\n return error;\n};\n","import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n BatchFieldArrayUpdate,\n ChangeHandler,\n DeepPartial,\n DelayCallback,\n EventType,\n Field,\n FieldError,\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n GetIsDirty,\n InternalFieldName,\n Names,\n Path,\n Ref,\n ResolverResult,\n SetFieldValue,\n SetValueConfig,\n Subjects,\n UnpackNestedValue,\n UseFormClearErrors,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormReset,\n UseFormResetField,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from '../types';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport createSubject from '../utils/createSubject';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport getValidationModes from '../utils/getValidationModes';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isPrimitive from '../utils/isPrimitive';\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\nimport isWeb from '../utils/isWeb';\nimport live from '../utils/live';\nimport omit from '../utils/omit';\nimport set from '../utils/set';\nimport unset from '../utils/unset';\n\nimport focusFieldBy from './focusFieldBy';\nimport generateWatchOutput from './generateWatchOutput';\nimport getDirtyFields from './getDirtyFields';\nimport getEventValue from './getEventValue';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getResolverOptions from './getResolverOptions';\nimport getRuleValue from './getRuleValue';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport isWatched from './isWatched';\nimport schemaErrorLookup from './schemaErrorLookup';\nimport skipValidation from './skipValidation';\nimport unsetEmptyArray from './unsetEmptyArray';\nimport validateField from './validateField';\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n} as const;\n\nexport function createFormControl<\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object,\n>(\n props: UseFormProps<TFieldValues, TContext> = {},\n): Omit<UseFormReturn<TFieldValues, TContext>, 'formState'> {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState: FormState<TFieldValues> = {\n isDirty: false,\n isValidating: false,\n dirtyFields: {} as FieldNamesMarkedBoolean<TFieldValues>,\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {} as FieldNamesMarkedBoolean<TFieldValues>,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n errors: {} as FieldErrors<TFieldValues>,\n };\n let _fields = {};\n let _defaultValues = _options.defaultValues || {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _stateFlags = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names: Names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n } as Names;\n let delayErrorCallback: DelayCallback;\n let timer = 0;\n let validateFields: Record<InternalFieldName, number> = {};\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects: Subjects<TFieldValues> = {\n watch: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors =\n _options.criteriaMode === VALIDATION_MODE.all;\n\n const debounce =\n <T extends Function>(callback: T, wait: number) =>\n (...args: any) => {\n clearTimeout(timer);\n timer = window.setTimeout(() => callback(...args), wait);\n };\n\n const _updateValid = async (shouldSkipRender?: boolean) => {\n let isValid = false;\n\n if (_proxyFormState.isValid) {\n isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuildInValidation(_fields, true);\n\n if (!shouldSkipRender && isValid !== _formState.isValid) {\n _formState.isValid = isValid;\n _subjects.state.next({\n isValid,\n });\n }\n }\n\n return isValid;\n };\n\n const _updateFieldArray: BatchFieldArrayUpdate = (\n name,\n method,\n args,\n values = [],\n shouldSetValues = true,\n shouldSetFields = true,\n ) => {\n _stateFlags.action = true;\n\n if (shouldSetFields && get(_fields, name)) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n\n if (Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n\n if (_proxyFormState.touchedFields && get(_formState.touchedFields, name)) {\n const touchedFields = method(\n get(_formState.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSetValues &&\n set(_formState.touchedFields as TFieldValues, name, touchedFields);\n unsetEmptyArray(_formState.touchedFields, name);\n }\n\n if (_proxyFormState.dirtyFields || _proxyFormState.isDirty) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n\n _subjects.state.next({\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n };\n\n const updateErrors = (name: InternalFieldName, error: FieldError) => (\n set(_formState.errors, name, error),\n _subjects.state.next({\n errors: _formState.errors,\n })\n );\n\n const updateValidAndValue = (\n name: InternalFieldName,\n shouldSkipSetValueAs?: boolean,\n ref?: Ref,\n ) => {\n const field: Field = get(_fields, name);\n\n if (field) {\n const defaultValue = get(_formValues, name, get(_defaultValues, name));\n\n isUndefined(defaultValue) ||\n (ref && (ref as HTMLInputElement).defaultChecked) ||\n shouldSkipSetValueAs\n ? set(\n _formValues,\n name,\n shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n )\n : setFieldValue(name, defaultValue);\n }\n\n _stateFlags.mount && _updateValid();\n };\n\n const updateTouchAndDirty = (\n name: InternalFieldName,\n fieldValue: unknown,\n isCurrentTouched?: boolean,\n shouldRender = true,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n let isFieldDirty = false;\n const output: Partial<FormState<TFieldValues>> & { name: string } = {\n name,\n };\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n if (_proxyFormState.isDirty) {\n const isPreviousFormDirty = _formState.isDirty;\n\n _formState.isDirty = output.isDirty = _getDirty();\n isFieldDirty = isPreviousFormDirty !== output.isDirty;\n }\n\n if (_proxyFormState.dirtyFields && !isCurrentTouched) {\n const isPreviousFieldDirty = get(_formState.dirtyFields, name);\n const isCurrentFieldPristine = deepEqual(\n get(_defaultValues, name),\n fieldValue,\n );\n\n isCurrentFieldPristine\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields as TFieldValues, name, true);\n output.dirtyFields = _formState.dirtyFields;\n isFieldDirty =\n isFieldDirty ||\n isPreviousFieldDirty !== get(_formState.dirtyFields, name);\n }\n\n if (isCurrentTouched && !isPreviousFieldTouched) {\n set(_formState.touchedFields as TFieldValues, name, isCurrentTouched);\n output.touchedFields = _formState.touchedFields;\n isFieldDirty =\n isFieldDirty ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isCurrentTouched);\n }\n\n isFieldDirty && shouldRender && _subjects.state.next(output);\n\n return isFieldDirty ? output : {};\n };\n\n const shouldRenderByError = async (\n shouldSkipRender: boolean,\n name: InternalFieldName,\n isValid: boolean,\n error?: FieldError,\n fieldState?: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n },\n ): Promise<void> => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid =\n _proxyFormState.isValid && _formState.isValid !== isValid;\n\n if (props.delayError && error) {\n delayErrorCallback =\n delayErrorCallback || debounce(updateErrors, props.delayError);\n delayErrorCallback(name, error);\n } else {\n clearTimeout(timer);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n\n if (\n ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) &&\n !shouldSkipRender\n ) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n\n _subjects.state.next(updatedFormState);\n }\n\n validateFields[name]--;\n\n if (_proxyFormState.isValidating && !validateFields[name]) {\n _subjects.state.next({\n isValidating: false,\n });\n validateFields = {};\n }\n };\n\n const _executeSchema = async (name?: InternalFieldName[]) =>\n _options.resolver\n ? await _options.resolver(\n { ..._formValues } as UnpackNestedValue<TFieldValues>,\n _options.context,\n getResolverOptions(\n name || _names.mount,\n _fields,\n _options.criteriaMode,\n _options.shouldUseNativeValidation,\n ),\n )\n : ({} as ResolverResult<TFieldValues>);\n\n const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\n const { errors } = await _executeSchema();\n\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors as FieldErrors<TFieldValues>;\n }\n\n return errors;\n };\n\n const executeBuildInValidation = async (\n fields: FieldRefs,\n shouldOnlyCheckValid?: boolean,\n context = {\n valid: true,\n },\n ) => {\n for (const name in fields) {\n const field = fields[name];\n\n if (field) {\n const fieldReference = field._f;\n const fieldValue = omit(field, '_f');\n\n if (fieldReference) {\n const fieldError = await validateField(\n field,\n get(_formValues, fieldReference.name),\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation,\n );\n\n if (fieldError[fieldReference.name]) {\n context.valid = false;\n\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n\n if (!shouldOnlyCheckValid) {\n fieldError[fieldReference.name]\n ? set(\n _formState.errors,\n fieldReference.name,\n fieldError[fieldReference.name],\n )\n : unset(_formState.errors, fieldReference.name);\n }\n }\n\n fieldValue &&\n (await executeBuildInValidation(\n fieldValue,\n shouldOnlyCheckValid,\n context,\n ));\n }\n }\n\n return context.valid;\n };\n\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field: Field = get(_fields, name);\n\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name as FieldPath<TFieldValues>);\n }\n\n _names.unMount = new Set();\n };\n\n const _getDirty: GetIsDirty = (name, data) => (\n name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues)\n );\n\n const _getWatch: WatchInternal<TFieldValues> = (\n names,\n defaultValue,\n isGlobal,\n ) => {\n const fieldValues = {\n ...(_stateFlags.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n };\n\n return generateWatchOutput(names, _names, fieldValues, isGlobal);\n };\n\n const _getFieldArray = (name: InternalFieldName) =>\n compact(\n get(\n _stateFlags.mount ? _formValues : _defaultValues,\n name,\n props.shouldUnregister ? get(_defaultValues, name, []) : [],\n ),\n );\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n ) => {\n const field: Field = get(_fields, name);\n let fieldValue: unknown = value;\n\n if (field) {\n const fieldReference = field._f;\n\n if (fieldReference) {\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n\n fieldValue =\n isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (\n fieldValue as InternalFieldName[]\n ).includes(selectRef.value)),\n );\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach(\n (checkboxRef) =>\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!(fieldValue as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : fieldValue === checkboxRef.value),\n )\n : (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === fieldValue),\n );\n }\n } else if (!isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = fieldValue;\n\n if (!fieldReference.ref.type) {\n _subjects.watch.next({\n name,\n });\n }\n }\n }\n }\n\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch);\n\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n };\n\n const setValues = <\n T extends InternalFieldName,\n K extends SetFieldValue<TFieldValues>,\n U,\n >(\n name: T,\n value: K,\n options: U,\n ) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}` as Path<TFieldValues>;\n const field = get(_fields, fieldName);\n\n (_names.array.has(name) ||\n !isPrimitive(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n\n set(_formValues, name, value);\n\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: _formValues,\n });\n\n if (\n (_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty\n ) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n\n _subjects.state.next({\n name,\n dirtyFields: _formState.dirtyFields,\n isDirty: _getDirty(name, value),\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(value)\n ? setValues(name, value, options)\n : setFieldValue(name, value, options);\n }\n\n isWatched(name, _names) && _subjects.state.next({});\n _subjects.watch.next({\n name,\n });\n };\n\n const onChange: ChangeHandler = async (event) => {\n const target = event.target;\n let name = target.name;\n const field: Field = get(_fields, name);\n\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type\n ? getFieldValue(field._f)\n : getEventValue(event);\n const isBlurEvent = event.type === EVENTS.BLUR;\n const shouldSkipValidation =\n (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(\n isBlurEvent,\n get(_formState.touchedFields, name),\n _formState.isSubmitted,\n validationModeAfterSubmit,\n validationModeBeforeSubmit,\n );\n const watched = isWatched(name, _names, isBlurEvent);\n\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n set(_formValues, name, fieldValue);\n\n const fieldState = updateTouchAndDirty(\n name,\n fieldValue,\n isBlurEvent,\n false,\n );\n\n const shouldRender = !isEmptyObject(fieldState) || watched;\n\n !isBlurEvent &&\n _subjects.watch.next({\n name,\n type: event.type,\n });\n\n if (shouldSkipValidation) {\n return (\n shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) })\n );\n }\n\n !isBlurEvent && watched && _subjects.state.next({});\n\n validateFields[name] = validateFields[name] ? +1 : 1;\n\n _proxyFormState.isValidating &&\n _subjects.state.next({\n isValidating: true,\n });\n\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n const previousErrorLookupResult = schemaErrorLookup(\n _formState.errors,\n _fields,\n name,\n );\n const errorLookupResult = schemaErrorLookup(\n errors,\n _fields,\n previousErrorLookupResult.name || name,\n );\n\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n\n isValid = isEmptyObject(errors);\n } else {\n error = (\n await validateField(\n field,\n get(_formValues, name),\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation,\n )\n )[name];\n\n isValid = await _updateValid(true);\n }\n\n field._f.deps && trigger(field._f.deps as FieldPath<TFieldValues>[]);\n\n shouldRenderByError(false, name, isValid, error, fieldState);\n }\n };\n\n const trigger: UseFormTrigger<TFieldValues> = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n _subjects.state.next({\n isValidating: true,\n });\n\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(\n isUndefined(name) ? name : fieldNames,\n );\n\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n } else if (name) {\n validationResult = (\n await Promise.all(\n fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuildInValidation(\n field && field._f ? { [fieldName]: field } : field,\n );\n }),\n )\n ).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n } else {\n validationResult = isValid = await executeBuildInValidation(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver ? { isValid } : {}),\n errors: _formState.errors,\n isValidating: false,\n });\n\n options.shouldFocus &&\n !validationResult &&\n focusFieldBy(\n _fields,\n (key) => get(_formState.errors, key),\n name ? fieldNames : _names.mount,\n );\n\n return validationResult;\n };\n\n const getValues: UseFormGetValues<TFieldValues> = (\n fieldNames?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>,\n ) => {\n const values = {\n ..._defaultValues,\n ...(_stateFlags.mount ? _formValues : {}),\n };\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 clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n name\n ? convertToArrayPayload(name).forEach((inputName) =>\n unset(_formState.errors, inputName),\n )\n : (_formState.errors = {} as FieldErrors<TFieldValues>);\n\n _subjects.state.next({\n errors: _formState.errors,\n isValid: true,\n });\n };\n\n const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n const ref = ((get(_fields, name, { _f: {} }) as Field)._f || {}).ref;\n\n set(_formState.errors, name, {\n ...error,\n ref,\n });\n\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watch: UseFormWatch<TFieldValues> = (\n name?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: unknown,\n ) =>\n isFunction(name)\n ? _subjects.watch.subscribe({\n next: (info) =>\n name(\n _getWatch(\n undefined,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n info as {\n name?: FieldPath<TFieldValues>;\n type?: EventType;\n value?: unknown;\n },\n ),\n })\n : _getWatch(\n name as InternalFieldName | InternalFieldName[],\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n\n if (get(_fields, fieldName)) {\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n }\n\n _subjects.watch.next({});\n\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n\n !options.keepIsValid && _updateValid();\n };\n\n const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\n let field = get(_fields, name);\n\n set(_fields, name, {\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n\n !isUndefined(options.value) &&\n !options.disabled &&\n set(_formValues, name, get(_formValues, name, options.value));\n\n field\n ? isBoolean(options.disabled) &&\n set(\n _formValues,\n name,\n options.disabled\n ? undefined\n : get(_formValues, name, getFieldValue(field._f)),\n )\n : updateValidAndValue(name, true);\n\n return {\n ...(isBoolean(options.disabled) ? { disabled: options.disabled } : {}),\n ...(_options.shouldUseNativeValidation\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue<number>(options.minLength) as number,\n maxLength: getRuleValue(options.maxLength) as number,\n pattern: getRuleValue(options.pattern) as string,\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n\n if (\n fieldRef === field._f.ref ||\n (radioOrCheckbox &&\n compact(field._f.refs).find((option) => option === fieldRef))\n ) {\n return;\n }\n\n set(_fields, name, {\n _f: radioOrCheckbox\n ? {\n ...field._f,\n refs: [...compact(field._f.refs).filter(live), fieldRef],\n ref: { type: fieldRef.type, name },\n }\n : {\n ...field._f,\n ref: fieldRef,\n },\n });\n\n !options.disabled && updateValidAndValue(name, false, fieldRef);\n } else {\n field = get(_fields, name, {});\n\n if (field._f) {\n field._f.mount = false;\n }\n\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> =\n (onValid, onInvalid) => async (e) => {\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let hasNoPromiseError = true;\n let fieldValues: any = _options.shouldUnregister\n ? cloneObject(_formValues)\n : { ..._formValues };\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n try {\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors as FieldErrors<TFieldValues>;\n fieldValues = values;\n } else {\n await executeBuildInValidation(_fields);\n }\n\n if (\n isEmptyObject(_formState.errors) &&\n Object.keys(_formState.errors).every((name) => get(fieldValues, name))\n ) {\n _subjects.state.next({\n errors: {} as FieldErrors<TFieldValues>,\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n onInvalid && (await onInvalid(_formState.errors, e));\n _options.shouldFocusError &&\n focusFieldBy(\n _fields,\n (key) => get(_formState.errors, key),\n _names.mount,\n );\n }\n } catch (err) {\n hasNoPromiseError = false;\n throw err;\n } finally {\n _formState.isSubmitted = true;\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful:\n isEmptyObject(_formState.errors) && hasNoPromiseError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n }\n };\n\n const resetField: UseFormResetField<TFieldValues> = (name, options = {}) => {\n if (isUndefined(options.defaultValue)) {\n setValue(name, get(_defaultValues, name));\n } else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, options.defaultValue);\n }\n\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, get(_defaultValues, name))\n : _getDirty();\n }\n\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n\n _subjects.state.next({ ..._formState });\n };\n\n const reset: UseFormReset<TFieldValues> = (\n formValues,\n keepStateOptions = {},\n ) => {\n const updatedValues = formValues || _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const values =\n formValues && !isEmptyObject(formValues)\n ? cloneUpdatedValues\n : _defaultValues;\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n\n if (!keepStateOptions.keepValues) {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n try {\n isHTMLElement(fieldReference) &&\n fieldReference.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n\n _formValues = props.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneUpdatedValues;\n\n _fields = {};\n\n _subjects.array.next({\n values,\n });\n\n _subjects.watch.next({\n values,\n });\n }\n\n _names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n\n _stateFlags.mount =\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\n\n _stateFlags.watch = !!props.shouldUnregister;\n\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: keepStateOptions.keepDirty\n ? _formState.isDirty\n : keepStateOptions.keepDefaultValues\n ? !deepEqual(formValues, _defaultValues)\n : false,\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : ((keepStateOptions.keepDefaultValues && formValues\n ? Object.entries(formValues).reduce(\n (previous, [key, value]) => ({\n ...previous,\n [key]: value !== get(_defaultValues, key),\n }),\n {},\n )\n : {}) as FieldNamesMarkedBoolean<TFieldValues>),\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : ({} as FieldNamesMarkedBoolean<TFieldValues>),\n errors: keepStateOptions.keepErrors\n ? _formState.errors\n : ({} as FieldErrors<TFieldValues>),\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n };\n\n const setFocus: UseFormSetFocus<TFieldValues> = (name) => {\n const field = get(_fields, name)._f;\n (field.ref.focus ? field.ref : field.refs[0]).focus();\n };\n\n return {\n control: {\n register,\n unregister,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _getFieldArray,\n _subjects,\n _proxyFormState,\n get _fields() {\n return _fields;\n },\n set _fields(value) {\n _fields = value;\n },\n get _formValues() {\n return _formValues;\n },\n set _formValues(value) {\n _formValues = value;\n },\n get _stateFlags() {\n return _stateFlags;\n },\n set _stateFlags(value) {\n _stateFlags = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n set _defaultValues(value) {\n _defaultValues = value;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n };\n}\n","import React from 'react';\n\nimport { createFormControl } from './logic/createFormControl';\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport {\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldValues,\n FormState,\n UseFormProps,\n UseFormReturn,\n} from './types';\nimport { useSubscribe } from './useSubscribe';\n\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object,\n>(\n props: UseFormProps<TFieldValues, TContext> = {},\n): UseFormReturn<TFieldValues, TContext> {\n const _formControl = React.useRef<\n UseFormReturn<TFieldValues, TContext> | undefined\n >();\n const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n isValidating: false,\n dirtyFields: {} as FieldNamesMarkedBoolean<TFieldValues>,\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {} as FieldNamesMarkedBoolean<TFieldValues>,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n errors: {} as FieldErrors<TFieldValues>,\n });\n\n if (_formControl.current) {\n _formControl.current.control._options = props;\n } else {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n\n const control = _formControl.current.control;\n\n useSubscribe({\n subject: control._subjects.state,\n callback: (value) => {\n if (shouldRenderFormState(value, control._proxyFormState, true)) {\n control._formState = {\n ...control._formState,\n ...value,\n };\n\n updateFormState({ ...control._formState });\n }\n },\n });\n\n React.useEffect(() => {\n if (!control._stateFlags.mount) {\n control._proxyFormState.isValid && control._updateValid();\n control._stateFlags.mount = true;\n }\n if (control._stateFlags.watch) {\n control._stateFlags.watch = false;\n control._subjects.state.next({});\n }\n control._removeUnmounted();\n });\n\n _formControl.current.formState = getProxyFormState(\n formState,\n control._proxyFormState,\n );\n\n return _formControl.current;\n}\n"],"names":["append","appendAt","prepend","prependAt","insert","insertAt","isCheckBox"],"mappings":"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"}
|
package/dist/index.umd.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactHookForm={},e.React)}(this,(function(e,t){"use strict";function r(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=r(t),a=e=>"checkbox"===e.type,n=e=>e instanceof Date,i=e=>null==e;const o=e=>"object"==typeof e;var u=e=>!i(e)&&!Array.isArray(e)&&o(e)&&!n(e),l=e=>u(e)&&e.target?a(e.target)?e.target.checked:e.target.value:e,c=(e,t)=>[...e].some(e=>(e=>e.substring(0,e.search(/.\d/))||e)(t)===e),d=e=>(e||[]).filter(Boolean),f=e=>void 0===e,m=(e,t,r)=>{if(u(e)&&t){const s=d(t.split(/[,[\].]+?/)).reduce((e,t)=>i(e)?e:e[t],e);return f(s)||s===e?f(e[t])?r:e[t]:s}};const g="blur",y="change",b="onBlur",h="onChange",_="onSubmit",p="onTouched",v="all",x="max",j="min",V="maxLength",A="minLength",O="pattern",F="required",w="validate";var S=(e,t)=>{const r=Object.assign({},e);return delete r[t],r};const k=s.createContext(null),D=()=>s.useContext(k);var C=(e,t,r,s=!0)=>{function a(a){return()=>{if(a in e)return t[a]!==v&&(t[a]=!s||v),r&&(r[a]=!0),e[a]}}const n={};for(const t in e)Object.defineProperty(n,t,{get:a(t)});return n},E=e=>u(e)&&!Object.keys(e).length,U=(e,t,r)=>{const s=S(e,"name");return E(s)||Object.keys(s).length>=Object.keys(t).length||Object.keys(s).find(e=>t[e]===(!r||v))},B=e=>Array.isArray(e)?e:[e],T=(e,t,r)=>r&&t?e===t:!e||!t||e===t||B(e).some(e=>e&&(e.startsWith(t)||t.startsWith(e)));function N(e){const t=s.useRef(e);t.current=e,s.useEffect(()=>{const r=!e.disabled&&t.current.subject.subscribe({next:t.current.callback});return()=>(e=>{e&&e.unsubscribe()})(r)},[e.disabled])}function M(e){const t=D(),{control:r=t.control,disabled:a,name:n,exact:i}=e||{},[o,u]=s.useState(r._formState),l=s.useRef({isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1}),c=s.useRef(n);return c.current=n,N({disabled:a,callback:e=>T(c.current,e.name,i)&&U(e,l.current)&&u(Object.assign(Object.assign({},r._formState),e)),subject:r._subjects.state}),C(o,r._proxyFormState,l.current,!1)}var L=e=>"string"==typeof e,R=(e,t,r,s)=>{const a=Array.isArray(e);return L(e)?(s&&t.watch.add(e),m(r,e)):a?e.map(e=>(s&&t.watch.add(e),m(r,e))):(s&&(t.watchAll=!0),r)},q=e=>"function"==typeof e,P=e=>{for(const t in e)if(q(e[t]))return!0;return!1};function W(e){const t=D(),{control:r=t.control,name:a,defaultValue:n,disabled:i,exact:o}=e||{},l=s.useRef(a);l.current=a,N({disabled:i,subject:r._subjects.watch,callback:e=>{if(T(l.current,e.name,o)){const t=R(l.current,r._names,e.values||r._formValues);d(f(l.current)||u(t)&&!P(t)?Object.assign({},t):Array.isArray(t)?[...t]:t)}}});const[c,d]=s.useState(f(n)?r._getWatch(a):n);return s.useEffect(()=>{r._removeUnmounted()}),c}function I(e){const t=D(),{name:r,control:a=t.control,shouldUnregister:n}=e,i=c(a._names.array,r),o=W({control:a,name:r,defaultValue:m(a._formValues,r,m(a._defaultValues,r,e.defaultValue)),exact:!i}),u=M({control:a,name:r});s.useRef(r).current=r;const d=a.register(r,Object.assign(Object.assign({},e.rules),{value:o}));return s.useEffect(()=>{const e=(e,t)=>{const r=m(a._fields,e);r&&(r._f.mount=t)};return e(r,!0),()=>{const t=a._options.shouldUnregister||n;(i?t&&!a._stateFlags.action:t)?a.unregister(r,{keepDefaultValue:!0}):e(r,!1)}},[r,a,i,n]),{field:{onChange:e=>{d.onChange({target:{value:l(e),name:r},type:y})},onBlur:()=>{d.onBlur({target:{value:m(a._formValues,r),name:r},type:g})},name:r,value:o,ref:e=>{const t=m(a._fields,r);e&&t&&e.focus&&(t._f.ref={focus:()=>e.focus(),setCustomValidity:t=>e.setCustomValidity(t),reportValidity:()=>e.reportValidity()})}},formState:u,fieldState:{invalid:!!m(u.errors,r),isDirty:!!m(u.dirtyFields,r),isTouched:!!m(u.touchedFields,r),error:m(u.errors,r)}}}var $=(e,t,r,s,a)=>t?Object.assign(Object.assign({},r[e]),{types:Object.assign(Object.assign({},r[e]&&r[e].types?r[e].types:{}),{[s]:a||!0})}):{},H=e=>/^\w*$/.test(e),z=e=>d(e.replace(/["|']|\]/g,"").split(/\.|\[/));function G(e,t,r){let s=-1;const a=H(t)?[t]:z(t),n=a.length,i=n-1;for(;++s<n;){const t=a[s];let n=r;if(s!==i){const r=e[t];n=u(r)||Array.isArray(r)?r:isNaN(+a[s+1])?{}:[]}e[t]=n,e=e[t]}return e}const J=(e,t,r)=>{for(const s of r||Object.keys(e)){const r=m(e,s);if(r){const e=r._f,s=S(r,"_f");if(e&&t(e.name)){if(e.ref.focus&&f(e.ref.focus()))break;if(e.refs){e.refs[0].focus();break}}else u(s)&&J(s,t)}}};var K=(e,t,r={})=>r.shouldFocus||f(r.shouldFocus)?r.focusName||`${e}.${f(r.focusIndex)?t:r.focusIndex}.`:"",Q=(e,t,r)=>!r&&(t.watchAll||t.watch.has(e)||[...t.watch].some(t=>e.startsWith(t)&&/^\.\w+/.test(e.slice(t.length)))),X=(e,t,r)=>e.map((e,s)=>{const a=t.current[s];return Object.assign(Object.assign({},e),a?{[r]:a[r]}:{})}),Y=()=>{const e="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const r=(16*Math.random()+e)%16|0;return("x"==t?r:3&r|8).toString(16)})},Z=(e=[],t)=>e.map(e=>Object.assign(Object.assign({},e[t]?{}:{[t]:Y()}),e));function ee(e,t){return[...B(e),...B(t)]}function te(e){let t;const r=Array.isArray(e);if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set(e);else{if(!r&&!u(e))return e;t=r?[]:{};for(const r in e){if(q(e[r])){t=e;break}t[r]=te(e[r])}}return t}var re=e=>Array.isArray(e)?e.map(()=>{}):void 0;function se(e,t,r){return[...e.slice(0,t),...B(r),...e.slice(t)]}var ae=(e,t,r)=>Array.isArray(e)?(f(e[r])&&(e[r]=void 0),e.splice(r,0,e.splice(t,1)[0]),e):[];function ne(e,t){return[...B(t),...B(e)]}var ie=(e,t)=>f(t)?[]:function(e,t){let r=0;const s=[...e];for(const e of t)s.splice(e-r,1),r++;return d(s).length?s:[]}(e,B(t).sort((e,t)=>e-t)),oe=(e,t,r)=>{e[t]=[e[r],e[r]=e[t]][0]},ue=(e,t,r)=>(e[t]=r,e);function le(){let e=[];return{get observers(){return e},next:t=>{for(const r of e)r.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}}var ce=e=>i(e)||!o(e);function de(e,t){if(ce(e)||ce(t))return e===t;if(n(e)&&n(t))return e.getTime()===t.getTime();const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length)return!1;for(const a of r){const r=e[a];if(!s.includes(a))return!1;if("ref"!==a){const e=t[a];if(n(r)&&n(e)||u(r)&&u(e)||Array.isArray(r)&&Array.isArray(e)?!de(r,e):r!==e)return!1}}return!0}var fe=e=>({isOnSubmit:!e||e===_,isOnBlur:e===b,isOnChange:e===h,isOnAll:e===v,isOnTouch:e===p}),me=e=>"boolean"==typeof e,ge=e=>"file"===e.type,ye=e=>e instanceof HTMLElement,be=e=>"select-multiple"===e.type,he=e=>"radio"===e.type,_e="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document,pe=e=>ye(e)&&document.contains(e);function ve(e,t){const r=H(t)?[t]:z(t),s=1==r.length?e:function(e,t){const r=t.slice(0,-1).length;let s=0;for(;s<r;)e=f(e)?s++:e[t[s++]];return e}(e,r),a=r[r.length-1];let n;s&&delete s[a];for(let t=0;t<r.slice(0,-1).length;t++){let s,a=-1;const i=r.slice(0,-(t+1)),o=i.length-1;for(t>0&&(n=e);++a<i.length;){const t=i[a];s=s?s[t]:e[t],o===a&&(u(s)&&E(s)||Array.isArray(s)&&!s.filter(e=>u(e)&&!E(e)||me(e)).length)&&(n?delete n[t]:delete e[t]),n=s}}return e}function xe(e,t={}){const r=Array.isArray(e);if(u(e)||r)for(const r in e)Array.isArray(e[r])||u(e[r])&&!P(e[r])?(t[r]=Array.isArray(e[r])?[]:{},xe(e[r],t[r])):i(e[r])||(t[r]=!0);return t}var je=(e,t)=>function e(t,r,s){const a=Array.isArray(t);if(u(t)||a)for(const a in t)Array.isArray(t[a])||u(t[a])&&!P(t[a])?f(r)||ce(s[a])?s[a]=Array.isArray(t[a])?xe(t[a],[]):Object.assign({},xe(t[a])):e(t[a],i(r)?{}:r[a],s[a]):s[a]=!de(t[a],r[a]);return s}(e,t,xe(t));const Ve={value:!1,isValid:!1},Ae={value:!0,isValid:!0};var Oe=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!f(e[0].attributes.value)?f(e[0].value)||""===e[0].value?Ae:{value:e[0].value,isValid:!0}:Ae:Ve}return Ve},Fe=(e,{valueAsNumber:t,valueAsDate:r,setValueAs:s})=>f(e)?e:t?""===e?NaN:+e:r&&L(e)?new Date(e):s?s(e):e;const we={isValid:!1,value:null};var Se=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,we):we;function ke(e){const t=e.ref;if(!(e.refs?e.refs.every(e=>e.disabled):t.disabled))return ge(t)?t.files:he(t)?Se(e.refs).value:be(t)?[...t.selectedOptions].map(({value:e})=>e):a(t)?Oe(e.refs).value:Fe(f(t.value)?e.ref.value:t.value,e)}var De=e=>e instanceof RegExp,Ce=e=>f(e)?void 0:De(e)?e.source:u(e)?De(e.value)?e.value.source:e.value:e;function Ee(e,t,r){const s=m(e,r);if(s||H(r))return{error:s,name:r};const a=r.split(".");for(;a.length;){const s=a.join("."),n=m(t,s),i=m(e,s);if(n&&!Array.isArray(n)&&r!==s)return{name:r};if(i&&i.type)return{name:s,error:i};a.pop()}return{name:r}}var Ue=(e,t)=>!d(m(e,t)).length&&ve(e,t),Be=e=>L(e)||s.isValidElement(e);function Te(e,t,r="validate"){if(Be(e)||Array.isArray(e)&&e.every(Be)||me(e)&&!e)return{type:r,message:Be(e)?e:"",ref:t}}var Ne=e=>u(e)&&!De(e)?e:{value:e,message:""},Me=async(e,t,r,s)=>{const{ref:n,refs:o,required:l,maxLength:c,minLength:d,min:f,max:m,pattern:g,validate:y,name:b,valueAsNumber:h,mount:_,disabled:p}=e._f;if(!_||p)return{};const v=o?o[0]:n,S=e=>{s&&v.reportValidity&&(v.setCustomValidity(me(e)?"":e||" "),v.reportValidity())},k={},D=he(n),C=a(n),U=D||C,B=(h||ge(n))&&!n.value||""===t||Array.isArray(t)&&!t.length,T=$.bind(null,b,r,k),N=(e,t,r,s=V,a=A)=>{const i=e?t:r;k[b]=Object.assign({type:e?s:a,message:i,ref:n},T(e?s:a,i))};if(l&&(!U&&(B||i(t))||me(t)&&!t||C&&!Oe(o).isValid||D&&!Se(o).isValid)){const{value:e,message:t}=Be(l)?{value:!!l,message:l}:Ne(l);if(e&&(k[b]=Object.assign({type:F,message:t,ref:v},T(F,t)),!r))return S(t),k}if(!(B||i(f)&&i(m))){let e,s;const a=Ne(m),o=Ne(f);if(isNaN(t)){const r=n.valueAsDate||new Date(t);L(a.value)&&(e=r>new Date(a.value)),L(o.value)&&(s=r<new Date(o.value))}else{const r=n.valueAsNumber||parseFloat(t);i(a.value)||(e=r>a.value),i(o.value)||(s=r<o.value)}if((e||s)&&(N(!!e,a.message,o.message,x,j),!r))return S(k[b].message),k}if((c||d)&&!B&&L(t)){const e=Ne(c),s=Ne(d),a=!i(e.value)&&t.length>e.value,n=!i(s.value)&&t.length<s.value;if((a||n)&&(N(a,e.message,s.message),!r))return S(k[b].message),k}if(g&&!B&&L(t)){const{value:e,message:s}=Ne(g);if(De(e)&&!t.match(e)&&(k[b]=Object.assign({type:O,message:s,ref:n},T(O,s)),!r))return S(s),k}if(y)if(q(y)){const e=Te(await y(t),v);if(e&&(k[b]=Object.assign(Object.assign({},e),T(w,e.message)),!r))return S(e.message),k}else if(u(y)){let e={};for(const s in y){if(!E(e)&&!r)break;const a=Te(await y[s](t),v,s);a&&(e=Object.assign(Object.assign({},a),T(s,a.message)),S(a.message),r&&(k[b]=e))}if(!E(e)&&(k[b]=Object.assign({ref:v},e),!r))return k}return S(!0),k};const Le={mode:_,reValidateMode:h,shouldFocusError:!0};function Re(e={}){let t,r=Object.assign(Object.assign({},Le),e),s={isDirty:!1,isValidating:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touchedFields:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,errors:{}},o={},u=r.defaultValues||{},y=r.shouldUnregister?{}:te(u),b={action:!1,mount:!1,watch:!1},h={mount:new Set,unMount:new Set,array:new Set,watch:new Set},_=0,p={};const x={isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},j={watch:le(),array:le(),state:le()},V=fe(r.mode),A=fe(r.reValidateMode),O=r.criteriaMode===v,F=async e=>{let t=!1;return x.isValid&&(t=r.resolver?E((await U()).errors):await T(o,!0),e||t===s.isValid||(s.isValid=t,j.state.next({isValid:t}))),t},w=(e,t)=>(G(s.errors,e,t),j.state.next({errors:s.errors})),k=(e,t,r)=>{const s=m(o,e);if(s){const a=m(y,e,m(u,e));f(a)||r&&r.defaultChecked||t?G(y,e,t?a:ke(s._f)):P(e,a)}b.mount&&F()},D=(e,t,r,a=!0)=>{let n=!1;const i={name:e},o=m(s.touchedFields,e);if(x.isDirty){const e=s.isDirty;s.isDirty=i.isDirty=N(),n=e!==i.isDirty}if(x.dirtyFields&&!r){const r=m(s.dirtyFields,e);de(m(u,e),t)?ve(s.dirtyFields,e):G(s.dirtyFields,e,!0),i.dirtyFields=s.dirtyFields,n=n||r!==m(s.dirtyFields,e)}return r&&!o&&(G(s.touchedFields,e,r),i.touchedFields=s.touchedFields,n=n||x.touchedFields&&o!==r),n&&a&&j.state.next(i),n?i:{}},C=async(r,a,n,i,o)=>{const u=m(s.errors,a),l=x.isValid&&s.isValid!==n;var c,d;if(e.delayError&&i?(t=t||(c=w,d=e.delayError,(...e)=>{clearTimeout(_),_=window.setTimeout(()=>c(...e),d)}),t(a,i)):(clearTimeout(_),i?G(s.errors,a,i):ve(s.errors,a)),((i?!de(u,i):u)||!E(o)||l)&&!r){const e=Object.assign(Object.assign(Object.assign({},o),l?{isValid:n}:{}),{errors:s.errors,name:a});s=Object.assign(Object.assign({},s),e),j.state.next(e)}p[a]--,x.isValidating&&!p[a]&&(j.state.next({isValidating:!1}),p={})},U=async e=>r.resolver?await r.resolver(Object.assign({},y),r.context,((e,t,r,s)=>{const a={};for(const r of e){const e=m(t,r);e&&G(a,r,e._f)}return{criteriaMode:r,names:[...e],fields:a,shouldUseNativeValidation:s}})(e||h.mount,o,r.criteriaMode,r.shouldUseNativeValidation)):{},T=async(e,t,a={valid:!0})=>{for(const n in e){const i=e[n];if(i){const e=i._f,n=S(i,"_f");if(e){const n=await Me(i,m(y,e.name),O,r.shouldUseNativeValidation);if(n[e.name]&&(a.valid=!1,t))break;t||(n[e.name]?G(s.errors,e.name,n[e.name]):ve(s.errors,e.name))}n&&await T(n,t,a)}}return a.valid},N=(e,t)=>(e&&t&&G(y,e,t),!de(z(),u)),M=(e,t,r)=>{const s=Object.assign({},b.mount?y:f(t)?u:L(e)?{[e]:t}:t);return R(e,h,s,r)},P=(e,t,r={})=>{const s=m(o,e);let n=t;if(s){const r=s._f;r&&(G(y,e,Fe(t,r)),n=_e&&ye(r.ref)&&i(t)?"":t,be(r.ref)?[...r.ref.options].forEach(e=>e.selected=n.includes(e.value)):r.refs?a(r.ref)?r.refs.length>1?r.refs.forEach(e=>e.checked=Array.isArray(n)?!!n.find(t=>t===e.value):n===e.value):r.refs[0].checked=!!n:r.refs.forEach(e=>e.checked=e.value===n):ge(r.ref)||(r.ref.value=n,r.ref.type||j.watch.next({name:e})))}(r.shouldDirty||r.shouldTouch)&&D(e,n,r.shouldTouch),r.shouldValidate&&H(e)},W=(e,t,r)=>{for(const s in t){const a=t[s],i=`${e}.${s}`,u=m(o,i);!h.array.has(e)&&ce(a)&&(!u||u._f)||n(a)?P(i,a,r):W(i,a,r)}},I=(e,t,r={})=>{const a=m(o,e),n=h.array.has(e);G(y,e,t),n?(j.array.next({name:e,values:y}),(x.isDirty||x.dirtyFields)&&r.shouldDirty&&(s.dirtyFields=je(u,y),j.state.next({name:e,dirtyFields:s.dirtyFields,isDirty:N(e,t)}))):!a||a._f||i(t)?P(e,t,r):W(e,t,r),Q(e,h)&&j.state.next({}),j.watch.next({name:e})},$=async e=>{const t=e.target;let a=t.name;const n=m(o,a);if(n){let u,c;const d=t.type?ke(n._f):l(e),f=e.type===g,b=!((i=n._f).mount&&(i.required||i.min||i.max||i.maxLength||i.minLength||i.pattern||i.validate)||r.resolver||m(s.errors,a)||n._f.deps)||((e,t,r,s,a)=>!a.isOnAll&&(!r&&a.isOnTouch?!(t||e):(r?s.isOnBlur:a.isOnBlur)?!e:!(r?s.isOnChange:a.isOnChange)||e))(f,m(s.touchedFields,a),s.isSubmitted,A,V),_=Q(a,h,f);f?n._f.onBlur&&n._f.onBlur(e):n._f.onChange&&n._f.onChange(e),G(y,a,d);const v=D(a,d,f,!1),w=!E(v)||_;if(!f&&j.watch.next({name:a,type:e.type}),b)return w&&j.state.next(Object.assign({name:a},_?{}:v));if(!f&&_&&j.state.next({}),p[a]=(p[a],1),x.isValidating&&j.state.next({isValidating:!0}),r.resolver){const{errors:e}=await U([a]),t=Ee(s.errors,o,a),r=Ee(e,o,t.name||a);u=r.error,a=r.name,c=E(e)}else u=(await Me(n,m(y,a),O,r.shouldUseNativeValidation))[a],c=await F(!0);n._f.deps&&H(n._f.deps),C(!1,a,c,u,v)}var i},H=async(e,t={})=>{let a,n;const i=B(e);if(j.state.next({isValidating:!0}),r.resolver){const t=await(async e=>{const{errors:t}=await U();if(e)for(const r of e){const e=m(t,r);e?G(s.errors,r,e):ve(s.errors,r)}else s.errors=t;return t})(f(e)?e:i);a=E(t),n=e?!i.some(e=>m(t,e)):a}else e?(n=(await Promise.all(i.map(async e=>{const t=m(o,e);return await T(t&&t._f?{[e]:t}:t)}))).every(Boolean),(n||s.isValid)&&F()):n=a=await T(o);return j.state.next(Object.assign(Object.assign(Object.assign({},!L(e)||x.isValid&&a!==s.isValid?{}:{name:e}),r.resolver?{isValid:a}:{}),{errors:s.errors,isValidating:!1})),t.shouldFocus&&!n&&J(o,e=>m(s.errors,e),e?i:h.mount),n},z=e=>{const t=Object.assign(Object.assign({},u),b.mount?y:{});return f(e)?t:L(e)?m(t,e):e.map(e=>m(t,e))},K=(e,t={})=>{for(const a of e?B(e):h.mount)h.mount.delete(a),h.array.delete(a),m(o,a)&&(t.keepValue||(ve(o,a),ve(y,a)),!t.keepError&&ve(s.errors,a),!t.keepDirty&&ve(s.dirtyFields,a),!t.keepTouched&&ve(s.touchedFields,a),!r.shouldUnregister&&!t.keepDefaultValue&&ve(u,a));j.watch.next({}),j.state.next(Object.assign(Object.assign({},s),t.keepDirty?{isDirty:N()}:{})),!t.keepIsValid&&F()},X=(e,t={})=>{let s=m(o,e);return G(o,e,{_f:Object.assign(Object.assign(Object.assign({},s&&s._f?s._f:{ref:{name:e}}),{name:e,mount:!0}),t)}),h.mount.add(e),!f(t.value)&&!t.disabled&&G(y,e,m(y,e,t.value)),s?me(t.disabled)&&G(y,e,t.disabled?void 0:m(y,e,ke(s._f))):k(e,!0),Object.assign(Object.assign(Object.assign({},me(t.disabled)?{disabled:t.disabled}:{}),r.shouldUseNativeValidation?{required:!!t.required,min:Ce(t.min),max:Ce(t.max),minLength:Ce(t.minLength),maxLength:Ce(t.maxLength),pattern:Ce(t.pattern)}:{}),{name:e,onChange:$,onBlur:$,ref:n=>{if(n){X(e,t),s=m(o,e);const r=f(n.value)&&n.querySelectorAll&&n.querySelectorAll("input,select,textarea")[0]||n,i=(e=>he(e)||a(e))(r);if(r===s._f.ref||i&&d(s._f.refs).find(e=>e===r))return;G(o,e,{_f:i?Object.assign(Object.assign({},s._f),{refs:[...d(s._f.refs).filter(pe),r],ref:{type:r.type,name:e}}):Object.assign(Object.assign({},s._f),{ref:r})}),!t.disabled&&k(e,!1,r)}else s=m(o,e,{}),s._f&&(s._f.mount=!1),(r.shouldUnregister||t.shouldUnregister)&&(!c(h.array,e)||!b.action)&&h.unMount.add(e)}})};return{control:{register:X,unregister:K,_executeSchema:U,_getWatch:M,_getDirty:N,_updateValid:F,_removeUnmounted:()=>{for(const e of h.unMount){const t=m(o,e);t&&(t._f.refs?t._f.refs.every(e=>!pe(e)):!pe(t._f.ref))&&K(e)}h.unMount=new Set},_updateFieldArray:(e,t,r,a=[],n=!0,i=!0)=>{if(b.action=!0,i&&m(o,e)){const s=t(m(o,e),r.argA,r.argB);n&&G(o,e,s)}if(Array.isArray(m(s.errors,e))){const a=t(m(s.errors,e),r.argA,r.argB);n&&G(s.errors,e,a),Ue(s.errors,e)}if(x.touchedFields&&m(s.touchedFields,e)){const a=t(m(s.touchedFields,e),r.argA,r.argB);n&&G(s.touchedFields,e,a),Ue(s.touchedFields,e)}(x.dirtyFields||x.isDirty)&&(s.dirtyFields=je(u,y)),j.state.next({isDirty:N(e,a),dirtyFields:s.dirtyFields,errors:s.errors,isValid:s.isValid})},_getFieldArray:t=>m(b.mount?y:u,t,e.shouldUnregister?m(u,t,[]):[]),_subjects:j,_proxyFormState:x,get _fields(){return o},set _fields(e){o=e},get _formValues(){return y},set _formValues(e){y=e},get _stateFlags(){return b},set _stateFlags(e){b=e},get _defaultValues(){return u},set _defaultValues(e){u=e},get _names(){return h},set _names(e){h=e},get _formState(){return s},set _formState(e){s=e},get _options(){return r},set _options(e){r=Object.assign(Object.assign({},r),e)}},trigger:H,register:X,handleSubmit:(e,t)=>async a=>{a&&(a.preventDefault&&a.preventDefault(),a.persist&&a.persist());let n=!0,i=r.shouldUnregister?te(y):Object.assign({},y);j.state.next({isSubmitting:!0});try{if(r.resolver){const{errors:e,values:t}=await U();s.errors=e,i=t}else await T(o);E(s.errors)&&Object.keys(s.errors).every(e=>m(i,e))?(j.state.next({errors:{},isSubmitting:!0}),await e(i,a)):(t&&await t(s.errors,a),r.shouldFocusError&&J(o,e=>m(s.errors,e),h.mount))}catch(e){throw n=!1,e}finally{s.isSubmitted=!0,j.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:E(s.errors)&&n,submitCount:s.submitCount+1,errors:s.errors})}},watch:(e,t)=>q(e)?j.watch.subscribe({next:r=>e(M(void 0,t),r)}):M(e,t,!0),setValue:I,getValues:z,reset:(t,r={})=>{const a=t||u,n=te(a),i=E(t)?u:n;if(r.keepDefaultValues||(u=a),!r.keepValues){if(_e)for(const e of h.mount){const t=m(o,e);if(t&&t._f){const e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;try{ye(e)&&e.closest("form").reset();break}catch(e){}}}y=e.shouldUnregister?r.keepDefaultValues?te(u):{}:n,o={},j.watch.next({values:i}),j.array.next({values:i})}h={mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1,focus:""},j.state.next({submitCount:r.keepSubmitCount?s.submitCount:0,isDirty:r.keepDirty?s.isDirty:!!r.keepDefaultValues&&!de(t,u),isSubmitted:!!r.keepIsSubmitted&&s.isSubmitted,dirtyFields:r.keepDirty?s.dirtyFields:r.keepDefaultValues&&t?Object.entries(t).reduce((e,[t,r])=>Object.assign(Object.assign({},e),{[t]:r!==m(u,t)}),{}):{},touchedFields:r.keepTouched?s.touchedFields:{},errors:r.keepErrors?s.errors:{},isSubmitting:!1,isSubmitSuccessful:!1}),b.mount=!x.isValid||!!r.keepIsValid,b.watch=!!e.shouldUnregister},resetField:(e,t={})=>{f(t.defaultValue)?I(e,m(u,e)):(I(e,t.defaultValue),G(u,e,t.defaultValue)),t.keepTouched||ve(s.touchedFields,e),t.keepDirty||(ve(s.dirtyFields,e),s.isDirty=t.defaultValue?N(e,m(u,e)):N()),t.keepError||(ve(s.errors,e),x.isValid&&F()),j.state.next(Object.assign({},s))},clearErrors:e=>{e?B(e).forEach(e=>ve(s.errors,e)):s.errors={},j.state.next({errors:s.errors,isValid:!0})},unregister:K,setError:(e,t,r)=>{const a=(m(o,e,{_f:{}})._f||{}).ref;G(s.errors,e,Object.assign(Object.assign({},t),{ref:a})),j.state.next({name:e,errors:s.errors,isValid:!1}),r&&r.shouldFocus&&a&&a.focus&&a.focus()},setFocus:e=>{const t=m(o,e)._f;(t.ref.focus?t.ref:t.refs[0]).focus()}}}e.Controller=e=>e.render(I(e)),e.FormProvider=e=>s.createElement(k.Provider,{value:S(e,"children")},e.children),e.appendErrors=$,e.get=m,e.set=G,e.useController=I,e.useFieldArray=e=>{const t=D(),{control:r=t.control,name:a,keyName:n="id",shouldUnregister:i}=e,[o,u]=s.useState(Z(r._getFieldArray(a),n)),l=s.useRef(o),c=s.useRef(a),d=s.useRef(!1);c.current=a,l.current=o,r._names.array.add(a),N({callback:({values:e,name:t})=>{t!==c.current&&t||u(Z(m(e,c.current),n))},subject:r._subjects.array});const f=s.useCallback(e=>{const t=((e,t)=>e.map((e={})=>S(e,t)))(e,n);return d.current=!0,G(r._formValues,a,t),t},[r,a,n]);return s.useEffect(()=>{r._stateFlags.action=!1,Q(a,r._names)&&r._subjects.state.next({}),d.current&&r._executeSchema([a]).then(e=>{const t=m(e.errors,a);t&&t.type&&!m(r._formState.errors,a)&&(G(r._formState.errors,a,t),r._subjects.state.next({errors:r._formState.errors}))}),r._subjects.watch.next({name:a,values:r._formValues}),r._names.focus&&J(r._fields,e=>e.startsWith(r._names.focus)),r._names.focus="",r._proxyFormState.isValid&&r._updateValid()},[o,a,r,n]),s.useEffect(()=>(!m(r._formValues,a)&&G(r._formValues,a,[]),()=>{(r._options.shouldUnregister||i)&&r.unregister(a)}),[a,r,n,i]),{swap:s.useCallback((e,t)=>{const s=X(r._getFieldArray(a),l,n);oe(s,e,t);const i=f(s);u(s),r._updateFieldArray(a,oe,{argA:e,argB:t},i,!1)},[f,a,r,n]),move:s.useCallback((e,t)=>{const s=X(r._getFieldArray(a),l,n);ae(s,e,t);const i=f(s);u(s),r._updateFieldArray(a,ae,{argA:e,argB:t},i,!1)},[f,a,r,n]),prepend:s.useCallback((e,t)=>{const s=ne(X(r._getFieldArray(a),l,n),Z(B(te(e)),n)),i=f(s);r._names.focus=K(a,0,t),u(s),r._updateFieldArray(a,ne,{argA:re(e)},i)},[f,a,r,n]),append:s.useCallback((e,t)=>{const s=B(te(e)),i=ee(X(r._getFieldArray(a),l,n),Z(s,n)),o=f(i);r._names.focus=K(a,o.length-1,t),u(i),r._updateFieldArray(a,ee,{argA:re(e)},o)},[f,a,r,n]),remove:s.useCallback(e=>{const t=ie(X(r._getFieldArray(a),l,n),e),s=f(t);u(t),r._updateFieldArray(a,ie,{argA:e},s)},[f,a,r,n]),insert:s.useCallback((e,t,s)=>{const i=se(X(r._getFieldArray(a),l,n),e,Z(B(te(t)),n)),o=f(i);r._names.focus=K(a,e,s),u(i),r._updateFieldArray(a,se,{argA:e,argB:re(t)},o)},[f,a,r,n]),update:s.useCallback((e,t)=>{const s=X(r._getFieldArray(a),l,n),i=ue(s,e,t);l.current=Z(i,n);const o=f(l.current);u(l.current),r._updateFieldArray(a,ue,{argA:e,argB:t},o,!0,!1)},[f,a,r,n]),replace:s.useCallback(e=>{const t=Z(B(e),n),s=f(t);u(t),r._updateFieldArray(a,()=>t,{},s,!0,!1)},[f,a,r,n]),fields:o}},e.useForm=function(e={}){const t=s.useRef(),[r,a]=s.useState({isDirty:!1,isValidating:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touchedFields:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,errors:{}});t.current?t.current.control._options=e:t.current=Object.assign(Object.assign({},Re(e)),{formState:r});const n=t.current.control;return N({subject:n._subjects.state,callback:e=>{U(e,n._proxyFormState,!0)&&(n._formState=Object.assign(Object.assign({},n._formState),e),a(Object.assign({},n._formState)))}}),s.useEffect(()=>{n._stateFlags.mount||(n._proxyFormState.isValid&&n._updateValid(),n._stateFlags.mount=!0),n._stateFlags.watch&&(n._stateFlags.watch=!1,n._subjects.state.next({})),n._removeUnmounted()}),t.current.formState=C(r,n._proxyFormState),t.current},e.useFormContext=D,e.useFormState=M,e.useWatch=W,Object.defineProperty(e,"__esModule",{value:!0})}));
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactHookForm={},e.React)}(this,(function(e,t){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=r(t),a=e=>"checkbox"===e.type,n=e=>e instanceof Date,i=e=>null==e;const o=e=>"object"==typeof e;var u=e=>!i(e)&&!Array.isArray(e)&&o(e)&&!n(e),l=e=>u(e)&&e.target?a(e.target)?e.target.checked:e.target.value:e,c=(e,t)=>[...e].some(e=>(e=>e.substring(0,e.search(/.\d/))||e)(t)===e),d=e=>(e||[]).filter(Boolean),f=e=>void 0===e,m=(e,t,r)=>{if(u(e)&&t){const s=d(t.split(/[,[\].]+?/)).reduce((e,t)=>i(e)?e:e[t],e);return f(s)||s===e?f(e[t])?r:e[t]:s}};const g="blur",y="change",b="onBlur",h="onChange",_="onSubmit",p="onTouched",v="all",x="max",V="min",j="maxLength",A="minLength",F="pattern",O="required",w="validate";var S=(e,t)=>{const r=Object.assign({},e);return delete r[t],r};const k=s.default.createContext(null),D=()=>s.default.useContext(k);var C=(e,t,r,s=!0)=>{function a(a){return()=>{if(a in e)return t[a]!==v&&(t[a]=!s||v),r&&(r[a]=!0),e[a]}}const n={};for(const t in e)Object.defineProperty(n,t,{get:a(t)});return n},E=e=>u(e)&&!Object.keys(e).length,U=(e,t,r)=>{const s=S(e,"name");return E(s)||Object.keys(s).length>=Object.keys(t).length||Object.keys(s).find(e=>t[e]===(!r||v))},B=e=>Array.isArray(e)?e:[e],T=(e,t,r)=>r&&t?e===t:!e||!t||e===t||B(e).some(e=>e&&(e.startsWith(t)||t.startsWith(e)));function N(e){const t=s.default.useRef(e);t.current=e,s.default.useEffect(()=>{const r=!e.disabled&&t.current.subject.subscribe({next:t.current.callback});return()=>(e=>{e&&e.unsubscribe()})(r)},[e.disabled])}function M(e){const t=D(),{control:r=t.control,disabled:a,name:n,exact:i}=e||{},[o,u]=s.default.useState(r._formState),l=s.default.useRef({isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1}),c=s.default.useRef(n);return c.current=n,N({disabled:a,callback:e=>T(c.current,e.name,i)&&U(e,l.current)&&u(Object.assign(Object.assign({},r._formState),e)),subject:r._subjects.state}),C(o,r._proxyFormState,l.current,!1)}var L=e=>"string"==typeof e,R=(e,t,r,s)=>{const a=Array.isArray(e);return L(e)?(s&&t.watch.add(e),m(r,e)):a?e.map(e=>(s&&t.watch.add(e),m(r,e))):(s&&(t.watchAll=!0),r)},q=e=>"function"==typeof e,W=e=>{for(const t in e)if(q(e[t]))return!0;return!1};function I(e){const t=D(),{control:r=t.control,name:a,defaultValue:n,disabled:i,exact:o}=e||{},l=s.default.useRef(a);l.current=a,N({disabled:i,subject:r._subjects.watch,callback:e=>{if(T(l.current,e.name,o)){const t=R(l.current,r._names,e.values||r._formValues);d(f(l.current)||u(t)&&!W(t)?Object.assign({},t):Array.isArray(t)?[...t]:t)}}});const[c,d]=s.default.useState(f(n)?r._getWatch(a):n);return s.default.useEffect(()=>{r._removeUnmounted()}),c}function P(e){const t=D(),{name:r,control:a=t.control,shouldUnregister:n}=e,i=c(a._names.array,r),o=I({control:a,name:r,defaultValue:m(a._formValues,r,m(a._defaultValues,r,e.defaultValue)),exact:!i}),u=M({control:a,name:r});s.default.useRef(r).current=r;const d=a.register(r,Object.assign(Object.assign({},e.rules),{value:o}));return s.default.useEffect(()=>{const e=(e,t)=>{const r=m(a._fields,e);r&&(r._f.mount=t)};return e(r,!0),()=>{const t=a._options.shouldUnregister||n;(i?t&&!a._stateFlags.action:t)?a.unregister(r,{keepDefaultValue:!0}):e(r,!1)}},[r,a,i,n]),{field:{onChange:e=>{d.onChange({target:{value:l(e),name:r},type:y})},onBlur:()=>{d.onBlur({target:{value:m(a._formValues,r),name:r},type:g})},name:r,value:o,ref:e=>{const t=m(a._fields,r);e&&t&&e.focus&&(t._f.ref={focus:()=>e.focus(),setCustomValidity:t=>e.setCustomValidity(t),reportValidity:()=>e.reportValidity()})}},formState:u,fieldState:{invalid:!!m(u.errors,r),isDirty:!!m(u.dirtyFields,r),isTouched:!!m(u.touchedFields,r),error:m(u.errors,r)}}}var $=(e,t,r,s,a)=>t?Object.assign(Object.assign({},r[e]),{types:Object.assign(Object.assign({},r[e]&&r[e].types?r[e].types:{}),{[s]:a||!0})}):{},H=e=>/^\w*$/.test(e),z=e=>d(e.replace(/["|']|\]/g,"").split(/\.|\[/));function G(e,t,r){let s=-1;const a=H(t)?[t]:z(t),n=a.length,i=n-1;for(;++s<n;){const t=a[s];let n=r;if(s!==i){const r=e[t];n=u(r)||Array.isArray(r)?r:isNaN(+a[s+1])?{}:[]}e[t]=n,e=e[t]}return e}const J=(e,t,r)=>{for(const s of r||Object.keys(e)){const r=m(e,s);if(r){const e=r._f,s=S(r,"_f");if(e&&t(e.name)){if(e.ref.focus&&f(e.ref.focus()))break;if(e.refs){e.refs[0].focus();break}}else u(s)&&J(s,t)}}};var K=(e,t,r={})=>r.shouldFocus||f(r.shouldFocus)?r.focusName||`${e}.${f(r.focusIndex)?t:r.focusIndex}.`:"",Q=(e,t,r)=>!r&&(t.watchAll||t.watch.has(e)||[...t.watch].some(t=>e.startsWith(t)&&/^\.\w+/.test(e.slice(t.length)))),X=(e,t,r)=>e.map((e,s)=>{const a=t.current[s];return Object.assign(Object.assign({},e),a?{[r]:a[r]}:{})}),Y=()=>{const e="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const r=(16*Math.random()+e)%16|0;return("x"==t?r:3&r|8).toString(16)})},Z=(e=[],t)=>e.map(e=>Object.assign(Object.assign({},e[t]?{}:{[t]:Y()}),e));function ee(e,t){return[...B(e),...B(t)]}function te(e){let t;const r=Array.isArray(e);if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set(e);else{if(!r&&!u(e))return e;t=r?[]:{};for(const r in e){if(q(e[r])){t=e;break}t[r]=te(e[r])}}return t}var re=e=>Array.isArray(e)?e.map(()=>{}):void 0;function se(e,t,r){return[...e.slice(0,t),...B(r),...e.slice(t)]}var ae=(e,t,r)=>Array.isArray(e)?(f(e[r])&&(e[r]=void 0),e.splice(r,0,e.splice(t,1)[0]),e):[];function ne(e,t){return[...B(t),...B(e)]}var ie=(e,t)=>f(t)?[]:function(e,t){let r=0;const s=[...e];for(const e of t)s.splice(e-r,1),r++;return d(s).length?s:[]}(e,B(t).sort((e,t)=>e-t)),oe=(e,t,r)=>{e[t]=[e[r],e[r]=e[t]][0]},ue=(e,t,r)=>(e[t]=r,e);function le(){let e=[];return{get observers(){return e},next:t=>{for(const r of e)r.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}}var ce=e=>i(e)||!o(e);function de(e,t){if(ce(e)||ce(t))return e===t;if(n(e)&&n(t))return e.getTime()===t.getTime();const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length)return!1;for(const a of r){const r=e[a];if(!s.includes(a))return!1;if("ref"!==a){const e=t[a];if(n(r)&&n(e)||u(r)&&u(e)||Array.isArray(r)&&Array.isArray(e)?!de(r,e):r!==e)return!1}}return!0}var fe=e=>({isOnSubmit:!e||e===_,isOnBlur:e===b,isOnChange:e===h,isOnAll:e===v,isOnTouch:e===p}),me=e=>"boolean"==typeof e,ge=e=>"file"===e.type,ye=e=>e instanceof HTMLElement,be=e=>"select-multiple"===e.type,he=e=>"radio"===e.type,_e="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document,pe=e=>ye(e)&&document.contains(e);function ve(e,t){const r=H(t)?[t]:z(t),s=1==r.length?e:function(e,t){const r=t.slice(0,-1).length;let s=0;for(;s<r;)e=f(e)?s++:e[t[s++]];return e}(e,r),a=r[r.length-1];let n;s&&delete s[a];for(let t=0;t<r.slice(0,-1).length;t++){let s,a=-1;const i=r.slice(0,-(t+1)),o=i.length-1;for(t>0&&(n=e);++a<i.length;){const t=i[a];s=s?s[t]:e[t],o===a&&(u(s)&&E(s)||Array.isArray(s)&&!s.filter(e=>u(e)&&!E(e)||me(e)).length)&&(n?delete n[t]:delete e[t]),n=s}}return e}function xe(e,t={}){const r=Array.isArray(e);if(u(e)||r)for(const r in e)Array.isArray(e[r])||u(e[r])&&!W(e[r])?(t[r]=Array.isArray(e[r])?[]:{},xe(e[r],t[r])):i(e[r])||(t[r]=!0);return t}var Ve=(e,t)=>function e(t,r,s){const a=Array.isArray(t);if(u(t)||a)for(const a in t)Array.isArray(t[a])||u(t[a])&&!W(t[a])?f(r)||ce(s[a])?s[a]=Array.isArray(t[a])?xe(t[a],[]):Object.assign({},xe(t[a])):e(t[a],i(r)?{}:r[a],s[a]):s[a]=!de(t[a],r[a]);return s}(e,t,xe(t));const je={value:!1,isValid:!1},Ae={value:!0,isValid:!0};var Fe=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!f(e[0].attributes.value)?f(e[0].value)||""===e[0].value?Ae:{value:e[0].value,isValid:!0}:Ae:je}return je},Oe=(e,{valueAsNumber:t,valueAsDate:r,setValueAs:s})=>f(e)?e:t?""===e?NaN:+e:r&&L(e)?new Date(e):s?s(e):e;const we={isValid:!1,value:null};var Se=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,we):we;function ke(e){const t=e.ref;if(!(e.refs?e.refs.every(e=>e.disabled):t.disabled))return ge(t)?t.files:he(t)?Se(e.refs).value:be(t)?[...t.selectedOptions].map(({value:e})=>e):a(t)?Fe(e.refs).value:Oe(f(t.value)?e.ref.value:t.value,e)}var De=e=>e instanceof RegExp,Ce=e=>f(e)?void 0:De(e)?e.source:u(e)?De(e.value)?e.value.source:e.value:e;function Ee(e,t,r){const s=m(e,r);if(s||H(r))return{error:s,name:r};const a=r.split(".");for(;a.length;){const s=a.join("."),n=m(t,s),i=m(e,s);if(n&&!Array.isArray(n)&&r!==s)return{name:r};if(i&&i.type)return{name:s,error:i};a.pop()}return{name:r}}var Ue=(e,t)=>!d(m(e,t)).length&&ve(e,t),Be=e=>L(e)||s.default.isValidElement(e);function Te(e,t,r="validate"){if(Be(e)||Array.isArray(e)&&e.every(Be)||me(e)&&!e)return{type:r,message:Be(e)?e:"",ref:t}}var Ne=e=>u(e)&&!De(e)?e:{value:e,message:""},Me=async(e,t,r,s)=>{const{ref:n,refs:o,required:l,maxLength:c,minLength:d,min:f,max:m,pattern:g,validate:y,name:b,valueAsNumber:h,mount:_,disabled:p}=e._f;if(!_||p)return{};const v=o?o[0]:n,S=e=>{s&&v.reportValidity&&(v.setCustomValidity(me(e)?"":e||" "),v.reportValidity())},k={},D=he(n),C=a(n),U=D||C,B=(h||ge(n))&&!n.value||""===t||Array.isArray(t)&&!t.length,T=$.bind(null,b,r,k),N=(e,t,r,s=j,a=A)=>{const i=e?t:r;k[b]=Object.assign({type:e?s:a,message:i,ref:n},T(e?s:a,i))};if(l&&(!U&&(B||i(t))||me(t)&&!t||C&&!Fe(o).isValid||D&&!Se(o).isValid)){const{value:e,message:t}=Be(l)?{value:!!l,message:l}:Ne(l);if(e&&(k[b]=Object.assign({type:O,message:t,ref:v},T(O,t)),!r))return S(t),k}if(!(B||i(f)&&i(m))){let e,s;const a=Ne(m),o=Ne(f);if(isNaN(t)){const r=n.valueAsDate||new Date(t);L(a.value)&&(e=r>new Date(a.value)),L(o.value)&&(s=r<new Date(o.value))}else{const r=n.valueAsNumber||parseFloat(t);i(a.value)||(e=r>a.value),i(o.value)||(s=r<o.value)}if((e||s)&&(N(!!e,a.message,o.message,x,V),!r))return S(k[b].message),k}if((c||d)&&!B&&L(t)){const e=Ne(c),s=Ne(d),a=!i(e.value)&&t.length>e.value,n=!i(s.value)&&t.length<s.value;if((a||n)&&(N(a,e.message,s.message),!r))return S(k[b].message),k}if(g&&!B&&L(t)){const{value:e,message:s}=Ne(g);if(De(e)&&!t.match(e)&&(k[b]=Object.assign({type:F,message:s,ref:n},T(F,s)),!r))return S(s),k}if(y)if(q(y)){const e=Te(await y(t),v);if(e&&(k[b]=Object.assign(Object.assign({},e),T(w,e.message)),!r))return S(e.message),k}else if(u(y)){let e={};for(const s in y){if(!E(e)&&!r)break;const a=Te(await y[s](t),v,s);a&&(e=Object.assign(Object.assign({},a),T(s,a.message)),S(a.message),r&&(k[b]=e))}if(!E(e)&&(k[b]=Object.assign({ref:v},e),!r))return k}return S(!0),k};const Le={mode:_,reValidateMode:h,shouldFocusError:!0};function Re(e={}){let t,r=Object.assign(Object.assign({},Le),e),s={isDirty:!1,isValidating:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touchedFields:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,errors:{}},o={},u=r.defaultValues||{},y=r.shouldUnregister?{}:te(u),b={action:!1,mount:!1,watch:!1},h={mount:new Set,unMount:new Set,array:new Set,watch:new Set},_=0,p={};const x={isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},V={watch:le(),array:le(),state:le()},j=fe(r.mode),A=fe(r.reValidateMode),F=r.criteriaMode===v,O=async e=>{let t=!1;return x.isValid&&(t=r.resolver?E((await U()).errors):await T(o,!0),e||t===s.isValid||(s.isValid=t,V.state.next({isValid:t}))),t},w=(e,t)=>(G(s.errors,e,t),V.state.next({errors:s.errors})),k=(e,t,r)=>{const s=m(o,e);if(s){const a=m(y,e,m(u,e));f(a)||r&&r.defaultChecked||t?G(y,e,t?a:ke(s._f)):W(e,a)}b.mount&&O()},D=(e,t,r,a=!0)=>{let n=!1;const i={name:e},o=m(s.touchedFields,e);if(x.isDirty){const e=s.isDirty;s.isDirty=i.isDirty=N(),n=e!==i.isDirty}if(x.dirtyFields&&!r){const r=m(s.dirtyFields,e);de(m(u,e),t)?ve(s.dirtyFields,e):G(s.dirtyFields,e,!0),i.dirtyFields=s.dirtyFields,n=n||r!==m(s.dirtyFields,e)}return r&&!o&&(G(s.touchedFields,e,r),i.touchedFields=s.touchedFields,n=n||x.touchedFields&&o!==r),n&&a&&V.state.next(i),n?i:{}},C=async(r,a,n,i,o)=>{const u=m(s.errors,a),l=x.isValid&&s.isValid!==n;var c,d;if(e.delayError&&i?(t=t||(c=w,d=e.delayError,(...e)=>{clearTimeout(_),_=window.setTimeout(()=>c(...e),d)}),t(a,i)):(clearTimeout(_),i?G(s.errors,a,i):ve(s.errors,a)),((i?!de(u,i):u)||!E(o)||l)&&!r){const e=Object.assign(Object.assign(Object.assign({},o),l?{isValid:n}:{}),{errors:s.errors,name:a});s=Object.assign(Object.assign({},s),e),V.state.next(e)}p[a]--,x.isValidating&&!p[a]&&(V.state.next({isValidating:!1}),p={})},U=async e=>r.resolver?await r.resolver(Object.assign({},y),r.context,((e,t,r,s)=>{const a={};for(const r of e){const e=m(t,r);e&&G(a,r,e._f)}return{criteriaMode:r,names:[...e],fields:a,shouldUseNativeValidation:s}})(e||h.mount,o,r.criteriaMode,r.shouldUseNativeValidation)):{},T=async(e,t,a={valid:!0})=>{for(const n in e){const i=e[n];if(i){const e=i._f,n=S(i,"_f");if(e){const n=await Me(i,m(y,e.name),F,r.shouldUseNativeValidation);if(n[e.name]&&(a.valid=!1,t))break;t||(n[e.name]?G(s.errors,e.name,n[e.name]):ve(s.errors,e.name))}n&&await T(n,t,a)}}return a.valid},N=(e,t)=>(e&&t&&G(y,e,t),!de(z(),u)),M=(e,t,r)=>{const s=Object.assign({},b.mount?y:f(t)?u:L(e)?{[e]:t}:t);return R(e,h,s,r)},W=(e,t,r={})=>{const s=m(o,e);let n=t;if(s){const r=s._f;r&&(G(y,e,Oe(t,r)),n=_e&&ye(r.ref)&&i(t)?"":t,be(r.ref)?[...r.ref.options].forEach(e=>e.selected=n.includes(e.value)):r.refs?a(r.ref)?r.refs.length>1?r.refs.forEach(e=>e.checked=Array.isArray(n)?!!n.find(t=>t===e.value):n===e.value):r.refs[0].checked=!!n:r.refs.forEach(e=>e.checked=e.value===n):ge(r.ref)||(r.ref.value=n,r.ref.type||V.watch.next({name:e})))}(r.shouldDirty||r.shouldTouch)&&D(e,n,r.shouldTouch),r.shouldValidate&&H(e)},I=(e,t,r)=>{for(const s in t){const a=t[s],i=`${e}.${s}`,u=m(o,i);!h.array.has(e)&&ce(a)&&(!u||u._f)||n(a)?W(i,a,r):I(i,a,r)}},P=(e,t,r={})=>{const a=m(o,e),n=h.array.has(e);G(y,e,t),n?(V.array.next({name:e,values:y}),(x.isDirty||x.dirtyFields)&&r.shouldDirty&&(s.dirtyFields=Ve(u,y),V.state.next({name:e,dirtyFields:s.dirtyFields,isDirty:N(e,t)}))):!a||a._f||i(t)?W(e,t,r):I(e,t,r),Q(e,h)&&V.state.next({}),V.watch.next({name:e})},$=async e=>{const t=e.target;let a=t.name;const n=m(o,a);if(n){let u,c;const d=t.type?ke(n._f):l(e),f=e.type===g,b=!((i=n._f).mount&&(i.required||i.min||i.max||i.maxLength||i.minLength||i.pattern||i.validate)||r.resolver||m(s.errors,a)||n._f.deps)||((e,t,r,s,a)=>!a.isOnAll&&(!r&&a.isOnTouch?!(t||e):(r?s.isOnBlur:a.isOnBlur)?!e:!(r?s.isOnChange:a.isOnChange)||e))(f,m(s.touchedFields,a),s.isSubmitted,A,j),_=Q(a,h,f);f?n._f.onBlur&&n._f.onBlur(e):n._f.onChange&&n._f.onChange(e),G(y,a,d);const v=D(a,d,f,!1),w=!E(v)||_;if(!f&&V.watch.next({name:a,type:e.type}),b)return w&&V.state.next(Object.assign({name:a},_?{}:v));if(!f&&_&&V.state.next({}),p[a]=(p[a],1),x.isValidating&&V.state.next({isValidating:!0}),r.resolver){const{errors:e}=await U([a]),t=Ee(s.errors,o,a),r=Ee(e,o,t.name||a);u=r.error,a=r.name,c=E(e)}else u=(await Me(n,m(y,a),F,r.shouldUseNativeValidation))[a],c=await O(!0);n._f.deps&&H(n._f.deps),C(!1,a,c,u,v)}var i},H=async(e,t={})=>{let a,n;const i=B(e);if(V.state.next({isValidating:!0}),r.resolver){const t=await(async e=>{const{errors:t}=await U();if(e)for(const r of e){const e=m(t,r);e?G(s.errors,r,e):ve(s.errors,r)}else s.errors=t;return t})(f(e)?e:i);a=E(t),n=e?!i.some(e=>m(t,e)):a}else e?(n=(await Promise.all(i.map(async e=>{const t=m(o,e);return await T(t&&t._f?{[e]:t}:t)}))).every(Boolean),(n||s.isValid)&&O()):n=a=await T(o);return V.state.next(Object.assign(Object.assign(Object.assign({},!L(e)||x.isValid&&a!==s.isValid?{}:{name:e}),r.resolver?{isValid:a}:{}),{errors:s.errors,isValidating:!1})),t.shouldFocus&&!n&&J(o,e=>m(s.errors,e),e?i:h.mount),n},z=e=>{const t=Object.assign(Object.assign({},u),b.mount?y:{});return f(e)?t:L(e)?m(t,e):e.map(e=>m(t,e))},K=(e,t={})=>{for(const a of e?B(e):h.mount)h.mount.delete(a),h.array.delete(a),m(o,a)&&(t.keepValue||(ve(o,a),ve(y,a)),!t.keepError&&ve(s.errors,a),!t.keepDirty&&ve(s.dirtyFields,a),!t.keepTouched&&ve(s.touchedFields,a),!r.shouldUnregister&&!t.keepDefaultValue&&ve(u,a));V.watch.next({}),V.state.next(Object.assign(Object.assign({},s),t.keepDirty?{isDirty:N()}:{})),!t.keepIsValid&&O()},X=(e,t={})=>{let s=m(o,e);return G(o,e,{_f:Object.assign(Object.assign(Object.assign({},s&&s._f?s._f:{ref:{name:e}}),{name:e,mount:!0}),t)}),h.mount.add(e),!f(t.value)&&!t.disabled&&G(y,e,m(y,e,t.value)),s?me(t.disabled)&&G(y,e,t.disabled?void 0:m(y,e,ke(s._f))):k(e,!0),Object.assign(Object.assign(Object.assign({},me(t.disabled)?{disabled:t.disabled}:{}),r.shouldUseNativeValidation?{required:!!t.required,min:Ce(t.min),max:Ce(t.max),minLength:Ce(t.minLength),maxLength:Ce(t.maxLength),pattern:Ce(t.pattern)}:{}),{name:e,onChange:$,onBlur:$,ref:n=>{if(n){X(e,t),s=m(o,e);const r=f(n.value)&&n.querySelectorAll&&n.querySelectorAll("input,select,textarea")[0]||n,i=(e=>he(e)||a(e))(r);if(r===s._f.ref||i&&d(s._f.refs).find(e=>e===r))return;G(o,e,{_f:i?Object.assign(Object.assign({},s._f),{refs:[...d(s._f.refs).filter(pe),r],ref:{type:r.type,name:e}}):Object.assign(Object.assign({},s._f),{ref:r})}),!t.disabled&&k(e,!1,r)}else s=m(o,e,{}),s._f&&(s._f.mount=!1),(r.shouldUnregister||t.shouldUnregister)&&(!c(h.array,e)||!b.action)&&h.unMount.add(e)}})};return{control:{register:X,unregister:K,_executeSchema:U,_getWatch:M,_getDirty:N,_updateValid:O,_removeUnmounted:()=>{for(const e of h.unMount){const t=m(o,e);t&&(t._f.refs?t._f.refs.every(e=>!pe(e)):!pe(t._f.ref))&&K(e)}h.unMount=new Set},_updateFieldArray:(e,t,r,a=[],n=!0,i=!0)=>{if(b.action=!0,i&&m(o,e)){const s=t(m(o,e),r.argA,r.argB);n&&G(o,e,s)}if(Array.isArray(m(s.errors,e))){const a=t(m(s.errors,e),r.argA,r.argB);n&&G(s.errors,e,a),Ue(s.errors,e)}if(x.touchedFields&&m(s.touchedFields,e)){const a=t(m(s.touchedFields,e),r.argA,r.argB);n&&G(s.touchedFields,e,a),Ue(s.touchedFields,e)}(x.dirtyFields||x.isDirty)&&(s.dirtyFields=Ve(u,y)),V.state.next({isDirty:N(e,a),dirtyFields:s.dirtyFields,errors:s.errors,isValid:s.isValid})},_getFieldArray:t=>d(m(b.mount?y:u,t,e.shouldUnregister?m(u,t,[]):[])),_subjects:V,_proxyFormState:x,get _fields(){return o},set _fields(e){o=e},get _formValues(){return y},set _formValues(e){y=e},get _stateFlags(){return b},set _stateFlags(e){b=e},get _defaultValues(){return u},set _defaultValues(e){u=e},get _names(){return h},set _names(e){h=e},get _formState(){return s},set _formState(e){s=e},get _options(){return r},set _options(e){r=Object.assign(Object.assign({},r),e)}},trigger:H,register:X,handleSubmit:(e,t)=>async a=>{a&&(a.preventDefault&&a.preventDefault(),a.persist&&a.persist());let n=!0,i=r.shouldUnregister?te(y):Object.assign({},y);V.state.next({isSubmitting:!0});try{if(r.resolver){const{errors:e,values:t}=await U();s.errors=e,i=t}else await T(o);E(s.errors)&&Object.keys(s.errors).every(e=>m(i,e))?(V.state.next({errors:{},isSubmitting:!0}),await e(i,a)):(t&&await t(s.errors,a),r.shouldFocusError&&J(o,e=>m(s.errors,e),h.mount))}catch(e){throw n=!1,e}finally{s.isSubmitted=!0,V.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:E(s.errors)&&n,submitCount:s.submitCount+1,errors:s.errors})}},watch:(e,t)=>q(e)?V.watch.subscribe({next:r=>e(M(void 0,t),r)}):M(e,t,!0),setValue:P,getValues:z,reset:(t,r={})=>{const a=t||u,n=te(a),i=t&&!E(t)?n:u;if(r.keepDefaultValues||(u=a),!r.keepValues){if(_e&&f(t))for(const e of h.mount){const t=m(o,e);if(t&&t._f){const e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;try{ye(e)&&e.closest("form").reset();break}catch(e){}}}y=e.shouldUnregister?r.keepDefaultValues?te(u):{}:n,o={},V.array.next({values:i}),V.watch.next({values:i})}h={mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1,focus:""},b.mount=!x.isValid||!!r.keepIsValid,b.watch=!!e.shouldUnregister,V.state.next({submitCount:r.keepSubmitCount?s.submitCount:0,isDirty:r.keepDirty?s.isDirty:!!r.keepDefaultValues&&!de(t,u),isSubmitted:!!r.keepIsSubmitted&&s.isSubmitted,dirtyFields:r.keepDirty?s.dirtyFields:r.keepDefaultValues&&t?Object.entries(t).reduce((e,[t,r])=>Object.assign(Object.assign({},e),{[t]:r!==m(u,t)}),{}):{},touchedFields:r.keepTouched?s.touchedFields:{},errors:r.keepErrors?s.errors:{},isSubmitting:!1,isSubmitSuccessful:!1})},resetField:(e,t={})=>{f(t.defaultValue)?P(e,m(u,e)):(P(e,t.defaultValue),G(u,e,t.defaultValue)),t.keepTouched||ve(s.touchedFields,e),t.keepDirty||(ve(s.dirtyFields,e),s.isDirty=t.defaultValue?N(e,m(u,e)):N()),t.keepError||(ve(s.errors,e),x.isValid&&O()),V.state.next(Object.assign({},s))},clearErrors:e=>{e?B(e).forEach(e=>ve(s.errors,e)):s.errors={},V.state.next({errors:s.errors,isValid:!0})},unregister:K,setError:(e,t,r)=>{const a=(m(o,e,{_f:{}})._f||{}).ref;G(s.errors,e,Object.assign(Object.assign({},t),{ref:a})),V.state.next({name:e,errors:s.errors,isValid:!1}),r&&r.shouldFocus&&a&&a.focus&&a.focus()},setFocus:e=>{const t=m(o,e)._f;(t.ref.focus?t.ref:t.refs[0]).focus()}}}e.Controller=e=>e.render(P(e)),e.FormProvider=e=>s.default.createElement(k.Provider,{value:S(e,"children")},e.children),e.appendErrors=$,e.get=m,e.set=G,e.useController=P,e.useFieldArray=e=>{const t=D(),{control:r=t.control,name:a,keyName:n="id",shouldUnregister:i}=e,[o,u]=s.default.useState(Z(r._getFieldArray(a),n)),l=s.default.useRef(o),c=s.default.useRef(a),d=s.default.useRef(!1);c.current=a,l.current=o,r._names.array.add(a),N({callback:({values:e,name:t})=>{t!==c.current&&t||u(Z(m(e,c.current),n))},subject:r._subjects.array});const f=s.default.useCallback(e=>{const t=((e,t)=>e.map((e={})=>S(e,t)))(e,n);return d.current=!0,G(r._formValues,a,t),t},[r,a,n]);return s.default.useEffect(()=>{r._stateFlags.action=!1,Q(a,r._names)&&r._subjects.state.next({}),d.current&&r._executeSchema([a]).then(e=>{const t=m(e.errors,a);t&&t.type&&!m(r._formState.errors,a)&&(G(r._formState.errors,a,t),r._subjects.state.next({errors:r._formState.errors}))}),r._subjects.watch.next({name:a,values:r._formValues}),r._names.focus&&J(r._fields,e=>e.startsWith(r._names.focus)),r._names.focus="",r._proxyFormState.isValid&&r._updateValid()},[o,a,r,n]),s.default.useEffect(()=>(!m(r._formValues,a)&&G(r._formValues,a,[]),()=>{(r._options.shouldUnregister||i)&&r.unregister(a)}),[a,r,n,i]),{swap:s.default.useCallback((e,t)=>{const s=X(r._getFieldArray(a),l,n);oe(s,e,t);const i=f(s);u(s),r._updateFieldArray(a,oe,{argA:e,argB:t},i,!1)},[f,a,r,n]),move:s.default.useCallback((e,t)=>{const s=X(r._getFieldArray(a),l,n);ae(s,e,t);const i=f(s);u(s),r._updateFieldArray(a,ae,{argA:e,argB:t},i,!1)},[f,a,r,n]),prepend:s.default.useCallback((e,t)=>{const s=ne(X(r._getFieldArray(a),l,n),Z(B(te(e)),n)),i=f(s);r._names.focus=K(a,0,t),u(s),r._updateFieldArray(a,ne,{argA:re(e)},i)},[f,a,r,n]),append:s.default.useCallback((e,t)=>{const s=B(te(e)),i=ee(X(r._getFieldArray(a),l,n),Z(s,n)),o=f(i);r._names.focus=K(a,o.length-1,t),u(i),r._updateFieldArray(a,ee,{argA:re(e)},o)},[f,a,r,n]),remove:s.default.useCallback(e=>{const t=ie(X(r._getFieldArray(a),l,n),e),s=f(t);u(t),r._updateFieldArray(a,ie,{argA:e},s)},[f,a,r,n]),insert:s.default.useCallback((e,t,s)=>{const i=se(X(r._getFieldArray(a),l,n),e,Z(B(te(t)),n)),o=f(i);r._names.focus=K(a,e,s),u(i),r._updateFieldArray(a,se,{argA:e,argB:re(t)},o)},[f,a,r,n]),update:s.default.useCallback((e,t)=>{const s=X(r._getFieldArray(a),l,n),i=ue(s,e,t);l.current=Z(i,n);const o=f(l.current);u(l.current),r._updateFieldArray(a,ue,{argA:e,argB:t},o,!0,!1)},[f,a,r,n]),replace:s.default.useCallback(e=>{const t=Z(B(e),n),s=f(t);u(t),r._updateFieldArray(a,()=>t,{},s,!0,!1)},[f,a,r,n]),fields:o}},e.useForm=function(e={}){const t=s.default.useRef(),[r,a]=s.default.useState({isDirty:!1,isValidating:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touchedFields:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,errors:{}});t.current?t.current.control._options=e:t.current=Object.assign(Object.assign({},Re(e)),{formState:r});const n=t.current.control;return N({subject:n._subjects.state,callback:e=>{U(e,n._proxyFormState,!0)&&(n._formState=Object.assign(Object.assign({},n._formState),e),a(Object.assign({},n._formState)))}}),s.default.useEffect(()=>{n._stateFlags.mount||(n._proxyFormState.isValid&&n._updateValid(),n._stateFlags.mount=!0),n._stateFlags.watch&&(n._stateFlags.watch=!1,n._subjects.state.next({})),n._removeUnmounted()}),t.current.formState=C(r,n._proxyFormState),t.current},e.useFormContext=D,e.useFormState=M,e.useWatch=I,Object.defineProperty(e,"__esModule",{value:!0})}));
|
2
2
|
//# sourceMappingURL=index.umd.js.map
|