react-hook-form 7.17.0 → 7.17.4
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 +1185 -0
- package/README.md +24 -0
- package/dist/controller.d.ts +2 -2
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +447 -446
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/logic/shouldSubscribeByName.d.ts +2 -0
- package/dist/types/controller.d.ts +15 -18
- package/dist/types/fields.d.ts +2 -2
- package/dist/types/form.d.ts +9 -10
- package/dist/types/utils.d.ts +21 -11
- package/dist/useController.d.ts +2 -2
- package/dist/useSubscribe.d.ts +4 -3
- package/dist/useWatch.d.ts +4 -4
- package/dist/utils/cloneObject.d.ts +1 -1
- package/dist/utils/convertToArrayPayload.d.ts +1 -1
- package/dist/utils/get.d.ts +1 -1
- package/dist/utils/{Subject.d.ts → subject.d.ts} +3 -2
- package/package.json +17 -19
package/dist/index.esm.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isDateObject.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getControllerValue.ts","../src/logic/getNodeParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/compact.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/constants.ts","../src/utils/omit.ts","../src/useFormContext.tsx","../src/logic/getProxyFormState.ts","../src/utils/isEmptyObject.ts","../src/logic/shouldRenderFormState.ts","../src/utils/convertToArrayPayload.ts","../src/useSubscribe.ts","../src/useFormState.ts","../src/useController.ts","../src/controller.tsx","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/getFocusFieldName.ts","../src/logic/mapCurrentIds.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/append.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/cloneObject.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/utils/getValidationModes.ts","../src/utils/isBoolean.ts","../src/utils/isFileInput.ts","../src/utils/isFunction.ts","../src/utils/isHTMLElement.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioInput.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/isString.ts","../src/utils/isWeb.ts","../src/utils/live.ts","../src/utils/Subject.ts","../src/utils/unset.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/getResolverOptions.ts","../src/logic/hasValidation.ts","../src/utils/deepMerge.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/logic/skipValidation.ts","../src/logic/unsetEmptyArray.ts","../src/utils/isMessage.ts","../src/utils/isRegex.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/logic/createFormControl.ts","../src/useForm.ts","../src/useWatch.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (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 extends unknown>(\n obj: T,\n path: string,\n defaultValue?: unknown,\n) => {\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 * as React from 'react';\n\nimport omit from './utils/omit';\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst FormContext = React.createContext<UseFormReturn | null>(null);\n\nFormContext.displayName = 'RHFContext';\n\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n>(): UseFormReturn<TFieldValues> =>\n React.useContext(FormContext) as unknown as UseFormReturn<TFieldValues>;\n\nexport const FormProvider = <\n TFieldValues extends FieldValues,\n TContext extends object = object,\n>(\n props: FormProviderProps<TFieldValues, TContext>,\n) => (\n <FormContext.Provider\n value={omit(props, 'children') as unknown as UseFormReturn}\n >\n {props.children}\n </FormContext.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 extends unknown>(value: T) =>\n Array.isArray(value) ? value : [value];\n","import * as React from 'react';\n\nimport { SubjectType, TearDown } from './utils/Subject';\n\ntype Props<T> = {\n disabled?: boolean;\n subject?: SubjectType<T>;\n callback: (value: T) => void;\n};\n\nexport function useSubscribe<T>({ disabled, subject, callback }: Props<T>) {\n const _subscription = React.useRef(subject);\n const _unSubscribe = React.useRef<{ unsubscribe: TearDown }>();\n\n if (disabled) {\n if (_subscription.current) {\n _unSubscribe.current && _unSubscribe.current.unsubscribe();\n _subscription.current = _unSubscribe.current = undefined;\n }\n } else {\n if (!_subscription.current) {\n _subscription.current = subject;\n }\n\n if (!_unSubscribe.current && _subscription.current) {\n _unSubscribe.current = _subscription.current.subscribe({\n next: callback,\n });\n }\n }\n\n React.useEffect(\n () => () => {\n _unSubscribe.current && _unSubscribe.current.unsubscribe();\n },\n [],\n );\n}\n","import * as React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport {\n FieldValues,\n Path,\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 } = 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 _name.current = name;\n\n useSubscribe({\n disabled,\n callback: (formState) =>\n (!_name.current ||\n !formState.name ||\n convertToArrayPayload(_name.current).includes(\n formState.name as Path<TFieldValues>,\n )) &&\n shouldRenderFormState(formState, _localProxyFormState.current) &&\n updateFormState({\n ...control._formState,\n ...formState,\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","import * as React from 'react';\n\nimport getControllerValue from './logic/getControllerValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport { EVENTS } from './constants';\nimport {\n Field,\n FieldPathWithValue,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\nimport { useSubscribe } from './useSubscribe';\n\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TResult = any,\n TName extends FieldPathWithValue<TFieldValues, TResult> = FieldPathWithValue<\n TFieldValues,\n TResult\n >,\n>(\n props: UseControllerProps<TFieldValues, TResult, TName>,\n): UseControllerReturn<TFieldValues, TResult, TName> {\n const methods = useFormContext<TFieldValues>();\n const { name, control = methods.control, shouldUnregister } = props;\n const [value, setInputStateValue] = React.useState(\n get(\n control._formValues,\n name,\n get(control._defaultValues, name, props.defaultValue),\n ),\n );\n const formState = useFormState({\n control: control || methods.control,\n name,\n });\n const _name = React.useRef(name);\n _name.current = name;\n\n useSubscribe({\n subject: control._subjects.control,\n callback: (data) =>\n (!data.name || _name.current === data.name) &&\n setInputStateValue(get(data.values, name)),\n });\n\n const registerProps = control.register(name, {\n ...props.rules,\n value,\n });\n\n const updateMounted = React.useCallback(\n (name: InternalFieldName, value: boolean) => {\n const field: Field = get(control._fields, name);\n\n if (field) {\n field._f.mount = value;\n }\n },\n [control],\n );\n\n React.useEffect(() => {\n updateMounted(name, true);\n\n return () => {\n const _shouldUnregisterField =\n control._shouldUnregister || shouldUnregister;\n\n if (\n isNameInFieldArray(control._names.array, name)\n ? _shouldUnregisterField && !control._stateFlags.action\n : _shouldUnregisterField\n ) {\n control.unregister(name);\n } else {\n updateMounted(name, false);\n }\n };\n }, [name, control, shouldUnregister, updateMounted]);\n\n return {\n field: {\n onChange: (event: any) => {\n const value = getControllerValue(event);\n setInputStateValue(value);\n\n registerProps.onChange({\n target: {\n value,\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n });\n },\n onBlur: () => {\n registerProps.onBlur({\n target: {\n value,\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, FieldPathWithValue, FieldValues } from './types';\nimport { useController } from './useController';\n\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TResult = any,\n TName extends FieldPathWithValue<TFieldValues, TResult> = FieldPathWithValue<\n TFieldValues,\n TResult\n >,\n>(\n props: ControllerProps<TFieldValues, TResult, TName>,\n) => props.render(useController<TFieldValues, TResult, 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 * as 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","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 * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFocusFieldName from './logic/getFocusFieldName';\nimport mapCurrentIds from './logic/mapCurrentIds';\nimport mapIds from './logic/mapId';\nimport appendAt from './utils/append';\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 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._getFieldArrayValue(name), keyName));\n const _fieldIds = React.useRef(fields);\n\n useSubscribe({\n callback: ({ values, name: fieldArrayName }) => {\n if (fieldArrayName === name || !fieldArrayName) {\n setFields(mapIds(get(values, name), keyName));\n }\n },\n subject: control._subjects.array,\n });\n\n _fieldIds.current = fields;\n control._names.array.add(name);\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 set(control._formValues, name, updatedFieldArrayValues);\n setFields(updatedFieldArrayValuesWithKey);\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(value);\n const updatedFieldArrayValuesWithKey = appendAt(\n mapCurrentIds(control._getFieldArrayValue(name), _fieldIds, keyName),\n mapIds(appendValue, keyName),\n );\n control._updateFieldArray(\n keyName,\n name,\n appendAt,\n {\n argA: fillEmptyArray(value),\n },\n updateValues(updatedFieldArrayValuesWithKey),\n );\n\n control._names.focus = getFocusFieldName(\n name,\n updatedFieldArrayValuesWithKey.length - appendValue.length,\n options,\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._getFieldArrayValue(name), _fieldIds, keyName),\n mapIds(convertToArrayPayload(value), keyName),\n );\n control._updateFieldArray(\n keyName,\n name,\n prependAt,\n {\n argA: fillEmptyArray(value),\n },\n updateValues(updatedFieldArrayValuesWithKey),\n );\n\n control._names.focus = getFocusFieldName(name, 0, options);\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValuesWithKey: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(\n mapCurrentIds(control._getFieldArrayValue(name), _fieldIds, keyName),\n index,\n );\n control._updateFieldArray(\n keyName,\n name,\n removeArrayAt,\n {\n argA: index,\n },\n updateValues(updatedFieldArrayValuesWithKey),\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._getFieldArrayValue(name), _fieldIds, keyName),\n index,\n mapIds(convertToArrayPayload(value), keyName),\n );\n control._updateFieldArray(\n keyName,\n name,\n insertAt,\n {\n argA: index,\n argB: fillEmptyArray(value),\n },\n updateValues(updatedFieldArrayValuesWithKey),\n );\n\n control._names.focus = getFocusFieldName(name, index, options);\n };\n\n const swap = (indexA: number, indexB: number) => {\n const updatedFieldArrayValuesWithKey = mapCurrentIds(\n control._getFieldArrayValue(name),\n _fieldIds,\n keyName,\n );\n swapArrayAt(updatedFieldArrayValuesWithKey, indexA, indexB);\n control._updateFieldArray(\n keyName,\n name,\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n updateValues(updatedFieldArrayValuesWithKey),\n false,\n );\n };\n\n const move = (from: number, to: number) => {\n const updatedFieldArrayValuesWithKey = mapCurrentIds(\n control._getFieldArrayValue(name),\n _fieldIds,\n keyName,\n );\n moveArrayAt(updatedFieldArrayValuesWithKey, from, to);\n control._updateFieldArray(\n keyName,\n name,\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n updateValues(updatedFieldArrayValuesWithKey),\n false,\n );\n };\n\n const update = (\n index: number,\n value: Partial<FieldArray<TFieldValues, TFieldArrayName>>,\n ) => {\n const updatedFieldArrayValuesWithKey = mapCurrentIds(\n control._getFieldArrayValue(name),\n _fieldIds,\n keyName,\n );\n const updatedFieldArrayValues = updateAt(\n updatedFieldArrayValuesWithKey,\n index,\n value,\n );\n _fieldIds.current = mapIds(updatedFieldArrayValues, keyName);\n control._updateFieldArray(\n keyName,\n name,\n updateAt,\n {\n argA: index,\n argB: value,\n },\n updateValues(_fieldIds.current),\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: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = mapIds(convertToArrayPayload(value), keyName);\n control._updateFieldArray(\n keyName,\n name,\n () => updatedFieldArrayValuesWithKey,\n {},\n updateValues(updatedFieldArrayValuesWithKey),\n true,\n false,\n );\n };\n\n React.useEffect(() => {\n control._stateFlags.action = false;\n\n if (control._names.watchAll) {\n control._subjects.state.next({});\n } else {\n for (const watchField of control._names.watch) {\n if (name.startsWith(watchField)) {\n control._subjects.state.next({});\n break;\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._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 isObject from './isObject';\n\nexport default function cloneObject<T extends unknown>(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 copy[key] = cloneObject(data[key]);\n }\n } else {\n return data;\n }\n\n return copy;\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 (\n isPrimitive(object1) ||\n isPrimitive(object2) ||\n isDateObject(object1) ||\n isDateObject(object2)\n ) {\n return object1 === object2;\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 (isObject(val1) || Array.isArray(val1)) &&\n (isObject(val2) || 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 Function =>\n typeof value === 'function';\n","export default (value: any): 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 (value: unknown): value is string => typeof value === 'string';\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","export type Observer<T> = {\n next: (value: T) => void;\n};\n\nexport type TearDown = () => void;\n\nexport type SubjectType<T> = {\n next: (value: T) => void;\n subscribe: (value: Observer<T>) => {\n unsubscribe: TearDown;\n };\n unsubscribe: () => void;\n};\n\nexport class Subscription {\n private tearDowns: TearDown[] = [];\n\n add(tearDown: TearDown) {\n this.tearDowns.push(tearDown);\n }\n\n unsubscribe() {\n for (const teardown of this.tearDowns) {\n teardown();\n }\n this.tearDowns = [];\n }\n}\n\nclass Subscriber<T> implements Observer<T> {\n closed = false;\n\n constructor(private observer: Observer<T>, subscription: Subscription) {\n subscription.add(() => (this.closed = true));\n }\n\n next(value: T) {\n if (!this.closed) {\n this.observer.next(value);\n }\n }\n}\n\nexport default class Subject<T> {\n observers: Observer<T>[];\n\n constructor() {\n this.observers = [];\n }\n\n next(value: T) {\n for (const observer of this.observers) {\n observer.next(value);\n }\n }\n\n subscribe(observer: Observer<T>) {\n const subscription = new Subscription();\n const subscriber = new Subscriber(observer, subscription);\n this.observers.push(subscriber);\n\n return subscription;\n }\n\n unsubscribe() {\n this.observers = [];\n }\n}\n","import 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 isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import { Field } from '../types';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n value: any,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : +value\n : valueAsDate\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 = get(_fields, name) as Field;\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","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 isObject from './isObject';\nimport isPrimitive from './isPrimitive';\n\nexport function deepMerge<\n T extends Record<keyof T, any>,\n U extends Record<keyof U, any>,\n>(target: T, source: U): T & U {\n if (isPrimitive(target) || isPrimitive(source)) {\n return source;\n }\n\n for (const key in source) {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n try {\n target[key] =\n (isObject(targetValue) && isObject(sourceValue)) ||\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\n ? deepMerge(targetValue, sourceValue)\n : sourceValue;\n } catch {}\n }\n\n return target;\n}\n","import { get } from '../utils';\nimport deepEqual from '../utils/deepEqual';\nimport { deepMerge } from '../utils/deepMerge';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport set from '../utils/set';\n\nfunction setDirtyFields<\n T extends Record<string, unknown>[],\n U extends Record<string, unknown>[],\n K extends Record<string, boolean | []>,\n>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n parentNode?: K,\n parentName?: keyof K,\n) {\n let index = -1;\n\n while (++index < values.length) {\n for (const key in values[index]) {\n if (Array.isArray(values[index][key])) {\n !dirtyFields[index] && (dirtyFields[index] = {});\n dirtyFields[index][key] = [];\n setDirtyFields(\n values[index][key] as T,\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n !isNullOrUndefined(defaultValues) &&\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\n ? set(dirtyFields[index] || {}, key)\n : (dirtyFields[index] = {\n ...dirtyFields[index],\n [key]: true,\n });\n }\n }\n\n parentNode &&\n !dirtyFields.length &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields;\n}\n\nexport default <T extends U, U extends Record<string, unknown>[]>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n) =>\n deepMerge(\n setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)),\n setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)),\n );\n","export default (\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 * as React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\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 { Field, FieldError, InternalFieldErrors, Message } 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 (\n field: Field,\n inputValue: any,\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 setCustomValidty = (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 setCustomValidty(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)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue);\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value)) {\n exceedMin = valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidty(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 setCustomValidty(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 setCustomValidty(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 setCustomValidty(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 setCustomValidty(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 setCustomValidty(true);\n return error;\n};\n","import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n BatchFieldArrayUpdate,\n ChangeHandler,\n DeepPartial,\n DelayCallback,\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 PathValue,\n Ref,\n RegisterOptions,\n ResolverResult,\n SetFieldValue,\n SetValueConfig,\n Subjects,\n UnpackNestedValue,\n UseFormClearErrors,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormRegisterReturn,\n UseFormReset,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from '../types';\nimport { set } from '../utils';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\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 isRadioOrCheckboxFunction 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 omitKey from '../utils/omitKeys';\nimport Subject from '../utils/Subject';\nimport unset from '../utils/unset';\n\nimport focusFieldBy from './focusFieldBy';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getNodeParentName from './getNodeParentName';\nimport getResolverOptions from './getResolverOptions';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport setFieldArrayDirtyFields from './setFieldArrayDirtyFields';\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\nconst isWindowUndefined = typeof window === 'undefined';\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 formOptions = {\n ...defaultOptions,\n ...props,\n };\n let _delayCallback: DelayCallback;\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 = formOptions.defaultValues || {};\n let _formValues = formOptions.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _stateFlags = {\n action: false,\n mount: false,\n watch: false,\n };\n let _timer = 0;\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 _validateCount: 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: new Subject(),\n control: new Subject(),\n array: new Subject(),\n state: new Subject(),\n };\n\n const validationMode = getValidationModes(formOptions.mode);\n const reValidateMode = getValidationModes(formOptions.reValidateMode);\n const isValidateAllFieldCriteria =\n formOptions.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 isFieldWatched = (name: FieldPath<TFieldValues>) =>\n _names.watchAll ||\n _names.watch.has(name) ||\n _names.watch.has((name.match(/\\w+/) || [])[0]);\n\n const updateErrorState = (name: InternalFieldName, error: FieldError) => {\n set(_formState.errors, name, error);\n\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n\n const shouldRenderBaseOnError = 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 previousError = get(_formState.errors, name);\n const shouldUpdateValid =\n _proxyFormState.isValid && _formState.isValid !== isValid;\n\n if (props.delayError && error) {\n _delayCallback =\n _delayCallback || debounce(updateErrorState, props.delayError);\n\n _delayCallback(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(previousError, error) : previousError) ||\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 _validateCount[name]--;\n\n if (_proxyFormState.isValidating && !_validateCount[name]) {\n _subjects.state.next({\n isValidating: false,\n });\n _validateCount = {};\n }\n };\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n shouldRender?: boolean,\n ) => {\n const field: Field = get(_fields, name);\n let fieldValue: unknown = value;\n\n if (field) {\n const _f = field._f;\n\n if (_f) {\n set(_formValues, name, getFieldValueAs(value, _f));\n\n fieldValue =\n isWeb && isHTMLElement(_f.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n\n if (isFileInput(_f.ref) && !isString(fieldValue)) {\n _f.ref.files = fieldValue as FileList;\n } else if (isMultipleSelect(_f.ref)) {\n [..._f.ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (\n fieldValue as InternalFieldName[]\n ).includes(selectRef.value)),\n );\n } else if (_f.refs) {\n if (isCheckBoxInput(_f.ref)) {\n _f.refs.length > 1\n ? _f.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 : (_f.refs[0].checked = !!fieldValue);\n } else {\n _f.refs.forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === fieldValue),\n );\n }\n } else {\n _f.ref.value = fieldValue;\n }\n\n if (shouldRender) {\n _subjects.control.next({\n values: _formValues,\n name,\n });\n }\n }\n }\n\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirtyState(name, fieldValue, options.shouldTouch);\n\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n };\n\n const updateTouchAndDirtyState = (\n name: InternalFieldName,\n inputValue: unknown,\n isCurrentTouched?: boolean,\n shouldRender = true,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n const state: Partial<FormState<TFieldValues>> & { name: string } = {\n name,\n };\n let isChanged = false;\n\n if (_proxyFormState.isDirty) {\n const previousIsDirty = _formState.isDirty;\n _formState.isDirty = _getIsDirty();\n state.isDirty = _formState.isDirty;\n isChanged = previousIsDirty !== state.isDirty;\n }\n\n if (_proxyFormState.dirtyFields && !isCurrentTouched) {\n const isPreviousFieldDirty = get(_formState.dirtyFields, name);\n const isCurrentFieldDirty = !deepEqual(\n get(_defaultValues, name),\n inputValue,\n );\n isCurrentFieldDirty\n ? set(_formState.dirtyFields as TFieldValues, name, true)\n : unset(_formState.dirtyFields, name);\n state.dirtyFields = _formState.dirtyFields;\n isChanged =\n isChanged || isPreviousFieldDirty !== get(_formState.dirtyFields, name);\n }\n\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n if (isCurrentTouched && !isPreviousFieldTouched) {\n set(_formState.touchedFields as TFieldValues, name, isCurrentTouched);\n state.touchedFields = _formState.touchedFields;\n isChanged =\n isChanged ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isCurrentTouched);\n }\n\n isChanged && shouldRender && _subjects.state.next(state);\n\n return isChanged ? state : {};\n };\n\n const executeResolver = async (name?: InternalFieldName[]) => {\n return formOptions.resolver\n ? await formOptions.resolver(\n { ..._formValues } as UnpackNestedValue<TFieldValues>,\n formOptions.context,\n getResolverOptions(\n name || _names.mount,\n _fields,\n formOptions.criteriaMode,\n formOptions.shouldUseNativeValidation,\n ),\n )\n : ({} as ResolverResult<TFieldValues>);\n };\n\n const executeResolverValidation = async (names?: InternalFieldName[]) => {\n const { errors } = await executeResolver();\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 validateForm = async (\n _fields: FieldRefs,\n shouldCheckValid?: 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 _f = field._f;\n const fieldValue = omit(field, '_f');\n\n if (_f) {\n const fieldError = await validateField(\n field,\n get(_formValues, _f.name),\n isValidateAllFieldCriteria,\n formOptions.shouldUseNativeValidation,\n );\n\n if (fieldError[_f.name]) {\n context.valid = false;\n\n if (shouldCheckValid) {\n break;\n }\n }\n\n if (!shouldCheckValid) {\n fieldError[_f.name]\n ? set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name);\n }\n }\n\n fieldValue &&\n (await validateForm(fieldValue, shouldCheckValid, context));\n }\n }\n\n return context.valid;\n };\n\n const handleChange: 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 inputValue = target.type ? getFieldValue(field._f) : target.value;\n const isBlurEvent = event.type === EVENTS.BLUR;\n\n if (isBlurEvent && field._f.onBlur) {\n field._f.onBlur(event);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n const shouldSkipValidation =\n (!hasValidation(field._f) &&\n !formOptions.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(\n isBlurEvent,\n get(_formState.touchedFields, name),\n _formState.isSubmitted,\n reValidateMode,\n validationMode,\n );\n const isWatched = !isBlurEvent && isFieldWatched(name);\n\n set(_formValues, name, inputValue);\n\n const fieldState = updateTouchAndDirtyState(\n name,\n inputValue,\n isBlurEvent,\n false,\n );\n\n const shouldRender = !isEmptyObject(fieldState) || isWatched;\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, ...(isWatched ? {} : fieldState) })\n );\n }\n\n !isBlurEvent && isWatched && _subjects.state.next({});\n\n _validateCount[name] = _validateCount[name] ? +1 : 1;\n\n _proxyFormState.isValidating &&\n _subjects.state.next({\n isValidating: true,\n });\n\n if (formOptions.resolver) {\n const { errors } = await executeResolver([name]);\n error = get(errors, name);\n\n if (isCheckBoxInput(target) && !error) {\n const parentNodeName = getNodeParentName(name);\n const parentField = get(_fields, parentNodeName);\n\n if (\n Array.isArray(parentField) &&\n parentField.every(\n (field: Field) => field._f && isCheckBoxInput(field._f.ref),\n )\n ) {\n const parentError = get(errors, parentNodeName, {});\n parentError.type && (error = parentError);\n name = parentNodeName;\n }\n }\n\n isValid = isEmptyObject(errors);\n } else {\n error = (\n await validateField(\n field,\n get(_formValues, name) as Field,\n isValidateAllFieldCriteria,\n formOptions.shouldUseNativeValidation,\n )\n )[name];\n\n isValid = await _updateValid(true);\n }\n\n if (field._f.deps) {\n trigger(field._f.deps as FieldPath<TFieldValues>[]);\n }\n\n shouldRenderBaseOnError(false, name, isValid, error, fieldState);\n }\n };\n\n const _updateValidAndInputValue = (\n name: InternalFieldName,\n shouldSkipValueAs?: boolean,\n ref?: Ref,\n ) => {\n const field = get(_fields, name) as Field;\n\n if (field) {\n const fieldValue = get(_formValues, name);\n const defaultValue = isUndefined(fieldValue)\n ? get(_defaultValues, name)\n : fieldValue;\n\n if (\n isUndefined(defaultValue) ||\n (ref && (ref as HTMLInputElement).defaultChecked) ||\n shouldSkipValueAs\n ) {\n set(\n _formValues,\n name,\n shouldSkipValueAs ? defaultValue : getFieldValue(field._f),\n );\n } else {\n setFieldValue(name, defaultValue);\n }\n }\n\n _stateFlags.mount && _updateValid();\n };\n\n const _getIsDirty: GetIsDirty = (name, data) => {\n name && data && set(_formValues, name, data);\n\n return !deepEqual({ ...getValues() }, _defaultValues);\n };\n\n const _updateValid = async (skipRender?: boolean) => {\n let isValid = false;\n if (_proxyFormState.isValid) {\n isValid = formOptions.resolver\n ? isEmptyObject((await executeResolver()).errors)\n : await validateForm(_fields, true);\n\n if (!skipRender && isValid !== _formState.isValid) {\n _formState.isValid = isValid;\n _subjects.state.next({\n isValid,\n });\n }\n }\n return isValid;\n };\n\n const setValues = (\n name: FieldPath<TFieldValues>,\n value: UnpackNestedValue<PathValue<TFieldValues, FieldPath<TFieldValues>>>,\n options: SetValueConfig,\n ) =>\n Object.entries(value).forEach(([fieldKey, fieldValue]) => {\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(\n fieldName,\n fieldValue as SetFieldValue<TFieldValues>,\n options,\n )\n : setFieldValue(\n fieldName,\n fieldValue as SetFieldValue<TFieldValues>,\n options,\n true,\n );\n });\n\n const _getWatch: WatchInternal<TFieldValues> = (\n fieldNames,\n defaultValue,\n isMounted,\n isGlobal,\n ) => {\n const fieldValues = {\n ...(isMounted || _stateFlags.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(fieldNames)\n ? { [fieldNames]: defaultValue }\n : defaultValue),\n };\n\n if (!fieldNames) {\n isGlobal && (_names.watchAll = true);\n return fieldValues;\n }\n\n const result = [];\n\n for (const fieldName of convertToArrayPayload(fieldNames)) {\n isGlobal && _names.watch.add(fieldName as InternalFieldName);\n result.push(get(fieldValues, fieldName as InternalFieldName));\n }\n\n return Array.isArray(fieldNames) ? result : result[0];\n };\n\n const _updateFieldArray: BatchFieldArrayUpdate = (\n keyName,\n name,\n method,\n args,\n values = [],\n shouldSet = true,\n shouldSetFields = true,\n ) => {\n let output;\n _stateFlags.action = true;\n\n if (shouldSetFields && get(_fields, name)) {\n output = method(get(_fields, name), args.argA, args.argB);\n shouldSet && set(_fields, name, output);\n }\n\n if (Array.isArray(get(_formState.errors, name))) {\n const output = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSet && set(_formState.errors, name, output);\n unsetEmptyArray(_formState.errors, name);\n }\n\n if (_proxyFormState.touchedFields && get(_formState.touchedFields, name)) {\n const output = method(\n get(_formState.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(_formState.touchedFields as TFieldValues, name, output);\n unsetEmptyArray(_formState.touchedFields, name);\n }\n\n if (_proxyFormState.dirtyFields || _proxyFormState.isDirty) {\n set(\n _formState.dirtyFields as TFieldValues,\n name,\n setFieldArrayDirtyFields(\n omitKey(values, keyName),\n get(_defaultValues, name, []),\n get(_formState.dirtyFields, name, []),\n ),\n );\n values &&\n set(\n _formState.dirtyFields as TFieldValues,\n name,\n setFieldArrayDirtyFields(\n omitKey(values, keyName),\n get(_defaultValues, name, []),\n get(_formState.dirtyFields, name, []),\n ),\n );\n unsetEmptyArray(_formState.dirtyFields, name);\n }\n\n _subjects.state.next({\n isDirty: _getIsDirty(name, omitKey(values, keyName)),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n };\n\n const _getFieldArrayValue = (name: InternalFieldName) =>\n get(_stateFlags.mount ? _formValues : _defaultValues, name, []);\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 set(\n _formState.dirtyFields as TFieldValues,\n name,\n setFieldArrayDirtyFields(\n value,\n get(_defaultValues, name, []),\n get(_formState.dirtyFields, name, []),\n ),\n );\n\n _subjects.state.next({\n name,\n dirtyFields: _formState.dirtyFields,\n isDirty: _getIsDirty(name, value),\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(value)\n ? setValues(name, value, options)\n : setFieldValue(name, value, options, true);\n }\n\n isFieldWatched(name) && _subjects.state.next({});\n _subjects.watch.next({\n name,\n });\n };\n\n const trigger: UseFormTrigger<TFieldValues> = async (name, options = {}) => {\n const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n let isValid;\n let validationResult;\n\n _subjects.state.next({\n isValidating: true,\n });\n\n if (formOptions.resolver) {\n const schemaResult = await executeResolverValidation(\n isUndefined(name) ? name : fieldNames,\n );\n\n isValid = isEmptyObject(schemaResult);\n validationResult = name\n ? !fieldNames.some((name) => get(schemaResult, 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 validateForm(\n field && field._f ? { [fieldName]: field } : field,\n );\n }),\n )\n ).every(Boolean);\n _updateValid();\n } else {\n validationResult = isValid = await validateForm(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) || isValid !== _formState.isValid ? {} : { name }),\n errors: _formState.errors,\n isValid,\n isValidating: false,\n });\n\n if (options.shouldFocus && !validationResult) {\n focusFieldBy(\n _fields,\n (key) => get(_formState.errors, key),\n name ? fieldNames : _names.mount,\n );\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 });\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 fieldName?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: unknown,\n ) =>\n isFunction(fieldName)\n ? _subjects.watch.subscribe({\n next: (info: any) =>\n fieldName(\n _getWatch(\n undefined,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n info,\n ),\n })\n : _getWatch(\n fieldName as InternalFieldName | InternalFieldName[],\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n false,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const inputName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(inputName);\n _names.array.delete(inputName);\n\n if (get(_fields, inputName)) {\n if (!options.keepValue) {\n unset(_fields, inputName);\n unset(_formValues, inputName);\n }\n\n !options.keepError && unset(_formState.errors, inputName);\n !options.keepDirty && unset(_formState.dirtyFields, inputName);\n !options.keepTouched && unset(_formState.touchedFields, inputName);\n !formOptions.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, inputName);\n }\n }\n\n _subjects.watch.next({});\n\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getIsDirty() }),\n });\n\n !options.keepIsValid && _updateValid();\n };\n\n const registerFieldRef = (\n name: InternalFieldName,\n fieldRef: HTMLInputElement,\n options?: RegisterOptions,\n ): ((name: InternalFieldName) => void) | void => {\n register(name as FieldPath<TFieldValues>, options);\n let field: Field = get(_fields, name);\n const ref = isUndefined(fieldRef.value)\n ? fieldRef.querySelectorAll\n ? (fieldRef.querySelectorAll('input,select,textarea')[0] as Ref) ||\n fieldRef\n : fieldRef\n : fieldRef;\n\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n\n if (\n ref === field._f.ref ||\n (isRadioOrCheckbox &&\n compact(field._f.refs || []).find((option) => option === ref))\n ) {\n return;\n }\n\n field = {\n _f: isRadioOrCheckbox\n ? {\n ...field._f,\n refs: [\n ...compact(field._f.refs || []).filter(\n (ref) => isHTMLElement(ref) && document.contains(ref),\n ),\n ref,\n ],\n ref: { type: ref.type, name },\n }\n : {\n ...field._f,\n ref,\n },\n };\n\n set(_fields, name, field);\n\n (!options || !options.disabled) &&\n _updateValidAndInputValue(name, false, ref);\n };\n\n const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\n const 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 if (!isUndefined(options.value)) {\n set(_formValues, name, options.value);\n }\n\n if (field && isBoolean(options.disabled)) {\n set(\n _formValues,\n name,\n options.disabled\n ? undefined\n : get(_formValues, name, getFieldValue(field._f)),\n );\n }\n\n !field && _updateValidAndInputValue(name, true);\n\n return isWindowUndefined\n ? ({ name: name as InternalFieldName } as UseFormRegisterReturn)\n : {\n name,\n ...(isBoolean(options.disabled)\n ? { disabled: options.disabled }\n : {}),\n onChange: handleChange,\n onBlur: handleChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n registerFieldRef(name, ref, options);\n } else {\n const field = get(_fields, name, {}) as Field;\n const _shouldUnregister =\n formOptions.shouldUnregister || options.shouldUnregister;\n\n if (field._f) {\n field._f.mount = false;\n }\n\n _shouldUnregister &&\n !(\n isNameInFieldArray(_names.array, name) && _stateFlags.action\n ) &&\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 = { ..._formValues };\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n try {\n if (formOptions.resolver) {\n const { errors, values } = await executeResolver();\n _formState.errors = errors as FieldErrors<TFieldValues>;\n fieldValues = values;\n } else {\n await validateForm(_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 formOptions.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 reset: UseFormReset<TFieldValues> = (\n formValues,\n keepStateOptions = {},\n ) => {\n const updatedValues = formValues || _defaultValues;\n const values = cloneObject(updatedValues);\n\n if (!keepStateOptions.keepValues) {\n _formValues = props.shouldUnregister ? {} : values;\n }\n\n if (isWeb && !keepStateOptions.keepValues) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const inputRef = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n try {\n isHTMLElement(inputRef) && inputRef.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = { ...updatedValues };\n }\n\n if (!keepStateOptions.keepValues) {\n _fields = {};\n\n _subjects.control.next({\n values: keepStateOptions.keepDefaultValues\n ? _defaultValues\n : { ...updatedValues },\n });\n\n _subjects.watch.next({});\n\n _subjects.array.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 _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 : ({} 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 _stateFlags.mount =\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\n _stateFlags.watch = !!props.shouldUnregister;\n };\n\n const setFocus: UseFormSetFocus<TFieldValues> = (name) =>\n get(_fields, name)._f.ref.focus();\n\n const _removeFields = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name) as Field;\n\n field &&\n (field._f.refs ? field._f.refs.every(live) : live(field._f.ref)) &&\n unregister(name as FieldPath<TFieldValues>);\n }\n\n _names.unMount = new Set();\n };\n\n return {\n control: {\n register,\n unregister,\n _getWatch,\n _getIsDirty,\n _updateValid,\n _removeFields,\n _updateFieldArray,\n _getFieldArrayValue,\n _subjects,\n _shouldUnregister: formOptions.shouldUnregister,\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 _updateProps: (options) => {\n formOptions = { ...defaultOptions, ...options };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n clearErrors,\n unregister,\n setError,\n setFocus,\n };\n}\n","import * as 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._updateProps(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: (formState) => {\n if (shouldRenderFormState(formState, control._proxyFormState, true)) {\n control._formState = {\n ...control._formState,\n ...formState,\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._removeFields();\n });\n\n _formControl.current.formState = getProxyFormState(\n formState,\n control._proxyFormState,\n );\n\n return _formControl.current;\n}\n","import * as React from 'react';\n\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isObject from './utils/isObject';\nimport isUndefined from './utils/isUndefined';\nimport {\n Control,\n DeepPartial,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n>(props: {\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\n}): UnpackNestedValue<DeepPartial<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}): FieldPathValue<TFieldValues, TFieldName>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldNames extends FieldPath<TFieldValues>[] = FieldPath<TFieldValues>[],\n>(props: {\n name: readonly [...TFieldNames];\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\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 } = props || {};\n const _name = React.useRef(name);\n _name.current = name;\n\n useSubscribe({\n disabled,\n subject: control._subjects.watch,\n callback: ({ name }) => {\n if (\n !_name.current ||\n !name ||\n convertToArrayPayload(_name.current).some(\n (currentName) =>\n name &&\n currentName &&\n (name.startsWith(currentName as InternalFieldName) ||\n currentName.startsWith(name as InternalFieldName)),\n )\n ) {\n const result = control._getWatch(\n _name.current as InternalFieldName,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n true,\n );\n\n updateValue(\n isObject(result)\n ? { ...result }\n : Array.isArray(result)\n ? [...result]\n : result,\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._removeFields();\n });\n\n return value;\n}\n"],"names":["omitKeys","append","appendAt","prepend","prependAt","insert","insertAt","isCheckBox"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isDateObject.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getControllerValue.ts","../src/logic/getNodeParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/compact.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/constants.ts","../src/utils/omit.ts","../src/useFormContext.tsx","../src/logic/getProxyFormState.ts","../src/utils/isEmptyObject.ts","../src/logic/shouldRenderFormState.ts","../src/utils/convertToArrayPayload.ts","../src/logic/shouldSubscribeByName.ts","../src/useSubscribe.ts","../src/useFormState.ts","../src/useController.ts","../src/controller.tsx","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/getFocusFieldName.ts","../src/logic/mapCurrentIds.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/append.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/isFunction.ts","../src/utils/cloneObject.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/utils/getValidationModes.ts","../src/utils/isBoolean.ts","../src/utils/isHTMLElement.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioInput.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/isString.ts","../src/utils/isWeb.ts","../src/utils/live.ts","../src/utils/subject.ts","../src/utils/unset.ts","../src/utils/isFileInput.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/getResolverOptions.ts","../src/logic/hasValidation.ts","../src/utils/deepMerge.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/logic/skipValidation.ts","../src/logic/unsetEmptyArray.ts","../src/utils/isMessage.ts","../src/utils/isRegex.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/logic/createFormControl.ts","../src/useForm.ts","../src/useWatch.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (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 * as 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>(name?: T, signalName?: string) =>\n !name ||\n !signalName ||\n convertToArrayPayload(name).some(\n (currentName) =>\n currentName &&\n (currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)),\n );\n","import * as React from 'react';\n\nimport { SubjectType, TearDown } from './utils/subject';\nimport { Noop } from './types';\n\ntype Props<T> = {\n disabled?: boolean;\n subject: SubjectType<T>;\n callback: (value: T) => void;\n skipEarlySubscription?: boolean;\n};\n\ntype Unsubscribe = { unsubscribe: TearDown };\n\ntype Payload<T> = {\n _unsubscribe: React.MutableRefObject<Unsubscribe | undefined>;\n props: Props<T>;\n};\n\nconst tearDown = (\n _unsubscribe: React.MutableRefObject<Unsubscribe | undefined>,\n) => {\n if (_unsubscribe.current) {\n _unsubscribe.current.unsubscribe();\n _unsubscribe.current = undefined;\n }\n};\n\nconst updateSubscriptionProps =\n <T>({ _unsubscribe, props }: Payload<T>) =>\n () => {\n if (props.disabled) {\n tearDown(_unsubscribe);\n } else if (!_unsubscribe.current) {\n _unsubscribe.current = props.subject.subscribe({\n next: props.callback,\n });\n }\n };\n\nexport function useSubscribe<T>(props: Props<T>) {\n const _unsubscribe = React.useRef<Unsubscribe>();\n const _updateSubscription = React.useRef<Noop>(() => {});\n\n _updateSubscription.current = updateSubscriptionProps({\n _unsubscribe,\n props,\n });\n\n !props.skipEarlySubscription && _updateSubscription.current();\n\n React.useEffect(() => {\n _updateSubscription.current();\n return () => tearDown(_unsubscribe);\n }, []);\n}\n","import * as React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\nimport { FieldValues, UseFormStateProps, UseFormStateReturn } 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 } = 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: (formState) =>\n shouldSubscribeByName(_name.current, formState.name) &&\n shouldRenderFormState(formState, _localProxyFormState.current) &&\n updateFormState({\n ...control._formState,\n ...formState,\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","import * as React from 'react';\n\nimport getControllerValue from './logic/getControllerValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport { EVENTS } from './constants';\nimport {\n Field,\n FieldPath,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\nimport { useSubscribe } from './useSubscribe';\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 [value, setInputStateValue] = React.useState(\n get(\n control._formValues,\n name,\n get(control._defaultValues, name, props.defaultValue),\n ),\n );\n const formState = useFormState({\n control: control || methods.control,\n name,\n });\n const _name = React.useRef(name);\n\n _name.current = name;\n\n useSubscribe({\n subject: control._subjects.control,\n callback: (data) =>\n (!data.name || _name.current === data.name) &&\n setInputStateValue(get(data.values, _name.current)),\n });\n\n const registerProps = control.register(name, {\n ...props.rules,\n value,\n });\n\n const updateMounted = React.useCallback(\n (name: InternalFieldName, value: boolean) => {\n const field: Field = get(control._fields, name);\n\n if (field) {\n field._f.mount = value;\n }\n },\n [control],\n );\n\n React.useEffect(() => {\n updateMounted(name, true);\n\n return () => {\n const _shouldUnregisterField =\n control._options.shouldUnregister || shouldUnregister;\n\n if (\n isNameInFieldArray(control._names.array, name)\n ? _shouldUnregisterField && !control._stateFlags.action\n : _shouldUnregisterField\n ) {\n control.unregister(name);\n } else {\n updateMounted(name, false);\n }\n };\n }, [name, control, shouldUnregister, updateMounted]);\n\n return {\n field: {\n onChange: (event: any) => {\n const value = getControllerValue(event);\n setInputStateValue(value);\n\n registerProps.onChange({\n target: {\n value,\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n });\n },\n onBlur: () => {\n registerProps.onBlur({\n target: {\n value,\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 * as 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","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 * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFocusFieldName from './logic/getFocusFieldName';\nimport mapCurrentIds from './logic/mapCurrentIds';\nimport mapIds from './logic/mapId';\nimport appendAt from './utils/append';\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 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\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 skipEarlySubscription: true,\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 set(control._formValues, name, updatedFieldArrayValues);\n setFields(updatedFieldArrayValuesWithKey);\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(value);\n const updatedFieldArrayValuesWithKey = appendAt(\n mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName),\n mapIds(appendValue, keyName),\n );\n control._updateFieldArray(\n name,\n appendAt,\n {\n argA: fillEmptyArray(value),\n },\n updateValues(updatedFieldArrayValuesWithKey),\n );\n\n control._names.focus = getFocusFieldName(\n name,\n updatedFieldArrayValuesWithKey.length - appendValue.length,\n options,\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(value), keyName),\n );\n control._updateFieldArray(\n name,\n prependAt,\n {\n argA: fillEmptyArray(value),\n },\n updateValues(updatedFieldArrayValuesWithKey),\n );\n\n control._names.focus = getFocusFieldName(name, 0, options);\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 control._updateFieldArray(\n name,\n removeArrayAt,\n {\n argA: index,\n },\n updateValues(updatedFieldArrayValuesWithKey),\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(value), keyName),\n );\n control._updateFieldArray(\n name,\n insertAt,\n {\n argA: index,\n argB: fillEmptyArray(value),\n },\n updateValues(updatedFieldArrayValuesWithKey),\n );\n\n control._names.focus = getFocusFieldName(name, index, options);\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 control._updateFieldArray(\n name,\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n updateValues(updatedFieldArrayValuesWithKey),\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 control._updateFieldArray(\n name,\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n updateValues(updatedFieldArrayValuesWithKey),\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(updatedFieldArrayValues, keyName);\n control._updateFieldArray(\n name,\n updateAt,\n {\n argA: index,\n argB: value,\n },\n updateValues(_fieldIds.current),\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: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = mapIds(convertToArrayPayload(value), keyName);\n control._updateFieldArray(\n name,\n () => updatedFieldArrayValuesWithKey,\n {},\n updateValues(updatedFieldArrayValuesWithKey),\n true,\n false,\n );\n };\n\n React.useEffect(() => {\n control._stateFlags.action = false;\n\n if (control._names.watchAll) {\n control._subjects.state.next({});\n } else {\n for (const watchField of control._names.watch) {\n if (name.startsWith(watchField)) {\n control._subjects.state.next({});\n break;\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","export default (value: unknown): value is Function =>\n typeof value === 'function';\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","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","export default (value: any): 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 (value: unknown): value is string => typeof value === 'string';\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 { Noop } from '../types';\n\nexport type Observer<T> = {\n next: (value: T) => void;\n};\n\nexport type TearDown = Noop;\n\nexport type SubjectType<T> = {\n next: (value: T) => void;\n subscribe: (value: Observer<T>) => {\n unsubscribe: TearDown;\n };\n unsubscribe: Noop;\n};\n\nexport class Subscription {\n private tearDowns: TearDown[] = [];\n\n add(tearDown: TearDown) {\n this.tearDowns.push(tearDown);\n }\n\n unsubscribe() {\n for (const teardown of this.tearDowns) {\n teardown();\n }\n this.tearDowns = [];\n }\n}\n\nclass Subscriber<T> implements Observer<T> {\n closed = false;\n\n constructor(private observer: Observer<T>, subscription: Subscription) {\n subscription.add(() => (this.closed = true));\n }\n\n next(value: T) {\n if (!this.closed) {\n this.observer.next(value);\n }\n }\n}\n\nexport default class Subject<T> {\n observers: Observer<T>[];\n\n constructor() {\n this.observers = [];\n }\n\n next(value: T) {\n for (const observer of this.observers) {\n observer.next(value);\n }\n }\n\n subscribe(observer: Observer<T>) {\n const subscription = new Subscription();\n const subscriber = new Subscriber(observer, subscription);\n this.observers.push(subscriber);\n\n return subscription;\n }\n\n unsubscribe() {\n this.observers = [];\n }\n}\n","import 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 { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import { Field } from '../types';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n value: any,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : +value\n : valueAsDate\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","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 isObject from './isObject';\nimport isPrimitive from './isPrimitive';\n\nexport function deepMerge<\n T extends Record<keyof T, any>,\n U extends Record<keyof U, any>,\n>(target: T, source: U): T & U {\n if (isPrimitive(target) || isPrimitive(source)) {\n return source;\n }\n\n for (const key in source) {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n try {\n target[key] =\n (isObject(targetValue) && isObject(sourceValue)) ||\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\n ? deepMerge(targetValue, sourceValue)\n : sourceValue;\n } catch {}\n }\n\n return target;\n}\n","import { get } from '../utils';\nimport deepEqual from '../utils/deepEqual';\nimport { deepMerge } from '../utils/deepMerge';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport set from '../utils/set';\n\nfunction setDirtyFields<\n T extends Record<string, unknown>[],\n U extends Record<string, unknown>[],\n K extends Record<string, boolean | []>,\n>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n parentNode?: K,\n parentName?: keyof K,\n) {\n let index = -1;\n\n while (++index < values.length) {\n for (const key in values[index]) {\n if (Array.isArray(values[index][key])) {\n !dirtyFields[index] && (dirtyFields[index] = {});\n dirtyFields[index][key] = [];\n setDirtyFields(\n values[index][key] as T,\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n !isNullOrUndefined(defaultValues) &&\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\n ? set(dirtyFields[index] || {}, key)\n : (dirtyFields[index] = {\n ...dirtyFields[index],\n [key]: true,\n });\n }\n }\n\n parentNode &&\n !dirtyFields.length &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields;\n}\n\nexport default <T extends U, U extends Record<string, unknown>[]>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n) =>\n deepMerge(\n setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)),\n setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)),\n );\n","export default (\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 * as React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\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 { Field, FieldError, InternalFieldErrors, Message } 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 (\n field: Field,\n inputValue: any,\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 setCustomValidty = (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 setCustomValidty(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)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue);\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value)) {\n exceedMin = valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidty(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 setCustomValidty(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 setCustomValidty(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 setCustomValidty(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 setCustomValidty(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 setCustomValidty(true);\n return error;\n};\n","import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n BatchFieldArrayUpdate,\n ChangeHandler,\n DeepPartial,\n DelayCallback,\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 PathValue,\n Ref,\n ResolverResult,\n SetFieldValue,\n SetValueConfig,\n Subjects,\n UnpackNestedValue,\n UseFormClearErrors,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormRegisterReturn,\n UseFormReset,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from '../types';\nimport { set } from '../utils';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\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 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 isRadioOrCheckboxFunction 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 Subject from '../utils/subject';\nimport unset from '../utils/unset';\n\nimport focusFieldBy from './focusFieldBy';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getNodeParentName from './getNodeParentName';\nimport getResolverOptions from './getResolverOptions';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport setFieldArrayDirtyFields from './setFieldArrayDirtyFields';\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\nconst isWindowUndefined = typeof window === 'undefined';\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: new Subject(),\n control: new Subject(),\n array: new Subject(),\n state: new Subject(),\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 isFieldWatched = (\n name: FieldPath<TFieldValues>,\n isBlurEvent?: boolean,\n ) =>\n !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n _names.watch.has((name.match(/\\w+/) || [])[0]));\n\n const _updateValid = async (shouldSkipRender?: boolean) => {\n let isValid = false;\n\n if (_proxyFormState.isValid) {\n isValid = _options.resolver\n ? isEmptyObject((await executeResolver()).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 updateFieldArrayDirty(name, values);\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 updateFieldArrayDirty = (name: any, value: any) => (\n set(\n _formState.dirtyFields as TFieldValues,\n name,\n setFieldArrayDirtyFields(\n value,\n get(_defaultValues, name, []),\n get(_formState.dirtyFields, name, []),\n ),\n ),\n unsetEmptyArray(_formState.dirtyFields, name)\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 executeResolver = 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 executeResolverValidation = async (names?: InternalFieldName[]) => {\n const { errors } = await executeResolver();\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 if (names) {\n const result = convertToArrayPayload(names).map(\n (fieldName) => (\n isGlobal && _names.watch.add(fieldName as InternalFieldName),\n get(fieldValues, fieldName as InternalFieldName)\n ),\n );\n\n return Array.isArray(names) ? result : result[0];\n }\n\n isGlobal && (_names.watchAll = true);\n return fieldValues;\n };\n\n const _getFieldArray = (name: InternalFieldName) =>\n get(\n _stateFlags.mount ? _formValues : _defaultValues,\n name,\n props.shouldUnregister ? get(_defaultValues, name, []) : [],\n );\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n shouldRender?: boolean,\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 {\n fieldReference.ref.value = fieldValue;\n }\n\n shouldRender &&\n _subjects.control.next({\n values: _formValues,\n name,\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 name: FieldPath<TFieldValues>,\n value: UnpackNestedValue<PathValue<TFieldValues, FieldPath<TFieldValues>>>,\n options: SetValueConfig,\n ) => {\n for (const fieldKey in value) {\n const fieldValue: SetFieldValue<TFieldValues> = 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, true);\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 updateFieldArrayDirty(name, value);\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, true);\n }\n\n isFieldWatched(name) && _subjects.state.next({});\n _subjects.watch.next({\n name,\n });\n };\n\n const handleChange: 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 ? getFieldValue(field._f) : target.value;\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 isWatched = isFieldWatched(name, 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) || isWatched;\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, ...(isWatched ? {} : fieldState) })\n );\n }\n\n !isBlurEvent && isWatched && _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 executeResolver([name]);\n error = get(errors, name);\n\n if (isCheckBoxInput(target) && !error) {\n const parentNodeName = getNodeParentName(name);\n const parentField = get(_fields, parentNodeName);\n\n if (\n Array.isArray(parentField) &&\n parentField.every(\n (field: Field) => field._f && isCheckBoxInput(field._f.ref),\n )\n ) {\n const parentError = get(errors, parentNodeName, {});\n parentError.type && (error = parentError);\n name = parentNodeName;\n }\n }\n\n isValid = isEmptyObject(errors);\n } else {\n error = (\n await validateField(\n field,\n get(_formValues, name) as Field,\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 executeResolverValidation(\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 _updateValid();\n } else {\n validationResult = isValid = await executeBuildInValidation(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) || isValid !== _formState.isValid ? {} : { name }),\n errors: _formState.errors,\n isValid,\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 });\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: any) =>\n name(\n _getWatch(\n undefined,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n info,\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 const 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) && set(_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 isWindowUndefined\n ? ({ name: name as InternalFieldName } as UseFormRegisterReturn)\n : {\n name,\n ...(isBoolean(options.disabled)\n ? { disabled: options.disabled }\n : {}),\n onChange: handleChange,\n onBlur: handleChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n register(name, options);\n let field: Field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) ||\n ref\n : ref\n : ref;\n\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(fieldRef);\n\n if (\n fieldRef === field._f.ref ||\n (isRadioOrCheckbox &&\n compact(field._f.refs || []).find(\n (option) => option === fieldRef,\n ))\n ) {\n return;\n }\n\n field = {\n _f: isRadioOrCheckbox\n ? {\n ...field._f,\n refs: [\n ...compact(field._f.refs || []).filter(live),\n fieldRef,\n ],\n ref: { type: fieldRef.type, name },\n }\n : {\n ...field._f,\n ref: fieldRef,\n },\n };\n\n set(_fields, name, field);\n\n (!options || !options.disabled) &&\n updateValidAndValue(name, false, fieldRef);\n } else {\n const field: Field = get(_fields, name, {});\n const shouldUnregister =\n _options.shouldUnregister || options.shouldUnregister;\n\n if (field._f) {\n field._f.mount = false;\n }\n\n shouldUnregister &&\n !(\n isNameInFieldArray(_names.array, name) && _stateFlags.action\n ) &&\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 = { ..._formValues };\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n try {\n if (_options.resolver) {\n const { errors, values } = await executeResolver();\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 reset: UseFormReset<TFieldValues> = (\n formValues,\n keepStateOptions = {},\n ) => {\n const hasUpdatedFormValues = !isEmptyObject(formValues);\n const updatedValues = formValues || _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n\n if (!keepStateOptions.keepValues) {\n if (isWeb) {\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 ? _defaultValues\n : {}\n : cloneUpdatedValues;\n _fields = {};\n\n _subjects.control.next({\n values: hasUpdatedFormValues ? cloneUpdatedValues : _defaultValues,\n });\n\n _subjects.watch.next({});\n\n _subjects.array.next({\n values: cloneUpdatedValues,\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 _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 _stateFlags.mount =\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\n _stateFlags.watch = !!props.shouldUnregister;\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 _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 clearErrors,\n unregister,\n setError,\n setFocus,\n };\n}\n","import * as 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: (formState) => {\n if (shouldRenderFormState(formState, control._proxyFormState, true)) {\n control._formState = {\n ...control._formState,\n ...formState,\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","import * as React from 'react';\n\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\nimport isObject from './utils/isObject';\nimport isUndefined from './utils/isUndefined';\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}): 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}): FieldPathValue<TFieldValues, TFieldName>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldNames extends FieldPath<TFieldValues>[] = FieldPath<TFieldValues>[],\n>(props: {\n name: readonly [...TFieldNames];\n defaultValue?: UnpackNestedValue<DeepPartialSkipArrayKey<TFieldValues>>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\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 } = 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 (shouldSubscribeByName(_name.current, formState.name)) {\n control._stateFlags.mount = true;\n const fieldValues = control._getWatch(\n _name.current as InternalFieldName,\n defaultValue as UnpackNestedValue<\n DeepPartialSkipArrayKey<TFieldValues>\n >,\n );\n\n updateValue(\n isObject(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"],"names":["append","appendAt","prepend","prependAt","insert","insertAt","isCheckBox"],"mappings":"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"}
|