{"version":3,"file":"index.esm.mjs","sources":["../src/utils/is-date-object.ts","../src/utils/is-null-or-undefined.ts","../src/utils/is-object.ts","../src/utils/is-plain-object.ts","../src/utils/is-web.ts","../src/utils/clone-object.ts","../src/utils/convert-to-array-payload.ts","../src/utils/is-primitive.ts","../src/utils/deep-equal.ts","../src/utils/compact.ts","../src/utils/is-undefined.ts","../src/utils/get.ts","../src/utils/is-boolean.ts","../src/utils/is-check-box-input.ts","../src/utils/is-empty-object.ts","../src/utils/is-file-input.ts","../src/utils/is-function.ts","../src/utils/is-html-element.ts","../src/utils/is-multiple-select.ts","../src/utils/is-radio-input.ts","../src/utils/is-radio-or-checkbox.ts","../src/utils/is-string.ts","../src/utils/live.ts","../src/utils/object-has-function.ts","../src/utils/is-key.ts","../src/utils/string-to-path.ts","../src/utils/set.ts","../src/utils/set-observable.ts","../src/utils/unset.ts","../src/utils/unset-observable.ts","../src/providers/form.provider.tsx","../src/hooks/use-form-context.hook.ts","../src/hooks/use-controller.hook.ts","../src/components/controller.component.tsx","../src/constants.ts","../src/hooks/use-field-array.hook.ts","../src/logic/get-checkbox-value.ts","../src/logic/get-dirty-fields.ts","../src/logic/get-event-value.ts","../src/logic/get-field-value-as.ts","../src/logic/get-radio-value.ts","../src/logic/get-field-value.ts","../src/utils/is-regex.ts","../src/logic/get-rule-value.ts","../src/hooks/use-form.hook.ts","../src/hooks/use-form-state.hook.ts","../src/hooks/use-watch.hook.ts"],"sourcesContent":["export const isDateObject = (value: unknown): value is Date => value instanceof Date;\n","export const isNullOrUndefined = (value: unknown): value is null | undefined => value == null;\n","import { isDateObject } from './is-date-object';\nimport { isNullOrUndefined } from './is-null-or-undefined';\n\nexport const isObjectType = (value: unknown): value is object => typeof value === 'object';\n\nexport const isObject = <T extends object>(value: unknown): value is T =>\n    !isNullOrUndefined(value) &&\n    !Array.isArray(value) &&\n    isObjectType(value) &&\n    !isDateObject(value);\n","import { isObject } from './is-object';\n\nexport const isPlainObject = (tempObject: object): boolean => {\n    const prototypeCopy = tempObject.constructor?.prototype;\n\n    return (\n        isObject(prototypeCopy) &&\n        Object.prototype.hasOwnProperty.call(prototypeCopy, 'isPrototypeOf')\n    );\n};\n","export const isWeb =\n    typeof window !== 'undefined' &&\n    typeof window.HTMLElement !== 'undefined' &&\n    typeof document !== 'undefined';\n","import { isObject } from './is-object';\nimport { isPlainObject } from './is-plain-object';\nimport { isWeb } from './is-web';\n\nexport function cloneObject<T>(data: T): T {\n    let copy: any;\n    const isArray = Array.isArray(data);\n    const isFileListInstance = typeof FileList !== 'undefined' ? data instanceof FileList : false;\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 (\n        !(isWeb && (data instanceof Blob || isFileListInstance)) &&\n        (isArray || isObject(data))\n    ) {\n        copy = isArray ? [] : {};\n\n        if (!isArray && !isPlainObject(data)) {\n            copy = data;\n        } else {\n            for (const key in data) {\n                if (Object.prototype.hasOwnProperty.call(data, key)) {\n                    copy[key] = cloneObject(data[key]);\n                }\n            }\n        }\n    } else {\n        return data;\n    }\n\n    return copy;\n}\n","export const convertToArrayPayload = <T>(value: T | Array<T>): Array<T> =>\n    Array.isArray(value) ? value : [value];\n","import type { Primitive } from '../types';\n\nimport { isNullOrUndefined } from './is-null-or-undefined';\nimport { isObjectType } from './is-object';\n\nexport const isPrimitive = (value: unknown): value is Primitive =>\n    isNullOrUndefined(value) || !isObjectType(value);\n","import { isDateObject } from './is-date-object';\nimport { isObject } from './is-object';\nimport { isPrimitive } from './is-primitive';\n\nexport 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","export const compact = <TValue>(value: TValue[]): TValue[] =>\n    Array.isArray(value) ? value.filter(Boolean) : [];\n","export const isUndefined = (val: unknown): val is undefined => val === undefined;\n","import { compact } from './compact';\nimport { isNullOrUndefined } from './is-null-or-undefined';\nimport { isObject } from './is-object';\nimport { isUndefined } from './is-undefined';\n\nexport const get = <T>(object: T, path?: string | null, defaultValue?: unknown): any => {\n    if (!path || !isObject(object)) {\n        return defaultValue;\n    }\n\n    const result = compact(path.split(/[,[\\].]+?/)).reduce(\n        (r, key) => (isNullOrUndefined(r) ? r : r[key as keyof object]),\n        object,\n    );\n\n    return isUndefined(result) || result === object\n        ? isUndefined(object[path as keyof T])\n            ? defaultValue\n            : object[path as keyof T]\n        : result;\n};\n","export const isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n","import type { FieldElement } from '../types';\n\nexport const isCheckBoxInput = (element: FieldElement): element is HTMLInputElement =>\n    element.type === 'checkbox';\n","import type { EmptyObject } from '../types';\n\nimport { isObject } from './is-object';\n\nexport const isEmptyObject = (value: unknown): value is EmptyObject =>\n    isObject(value) && !Object.keys(value).length;\n","import { FieldElement } from '../types';\n\nexport const isFileInput = (element: FieldElement): element is HTMLInputElement =>\n    element.type === 'file';\n","export const isFunction = (value: unknown): value is () => void => typeof value === 'function';\n","import { isWeb } from './is-web';\n\nexport const isHTMLElement = (value: unknown): value is HTMLElement => {\n    if (!isWeb) {\n        return false;\n    }\n\n    const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\n\n    return (\n        value instanceof (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement)\n    );\n};\n","import { FieldElement } from '../types';\n\nexport const isMultipleSelect = (element: FieldElement): element is HTMLSelectElement =>\n    element.type === `select-multiple`;\n","import { FieldElement } from '../types';\n\nexport const isRadioInput = (element: FieldElement): element is HTMLInputElement =>\n    element.type === 'radio';\n","import { FieldElement } from '../types';\n\nimport { isCheckBoxInput } from './is-check-box-input';\nimport { isRadioInput } from './is-radio-input';\n\nexport const isRadioOrCheckbox = (ref: FieldElement): ref is HTMLInputElement =>\n    isRadioInput(ref) || isCheckBoxInput(ref);\n","export const isString = (value: unknown): value is string => typeof value === 'string';\n","import { Ref } from '../types';\n\nimport { isHTMLElement } from './is-html-element';\n\nexport const live = (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\n","import { isFunction } from './is-function';\n\nexport const objectHasFunction = <T>(data: T): boolean => {\n    for (const key in data) {\n        if (isFunction(data[key])) {\n            return true;\n        }\n    }\n    return false;\n};\n","export const isKey = (value: string) => /^\\w*$/.test(value);\n","import { compact } from './compact';\n\nexport const stringToPath = (input: string): string[] =>\n    compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import type { FieldPath, FieldValues } from '../types';\n\nimport { isKey } from './is-key';\nimport { isObject } from './is-object';\nimport { stringToPath } from './string-to-path';\n\nexport const set = (object: FieldValues, path: FieldPath<FieldValues>, value?: unknown) => {\n    let updatedObject = object;\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 = updatedObject[key];\n            newValue =\n                isObject(objValue) || Array.isArray(objValue)\n                    ? objValue\n                    : !Number.isNaN(+tempPath[index + 1])\n                      ? []\n                      : {};\n        }\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n            return;\n        }\n\n        updatedObject[key] = newValue;\n        updatedObject = updatedObject[key];\n    }\n\n    return updatedObject;\n};\n","import { isObservable, Observable } from '@legendapp/state';\n\nimport type { FieldPath, FieldValues } from '../types';\n\nimport { isKey } from './is-key';\nimport { isObject } from './is-object';\nimport { stringToPath } from './string-to-path';\n\nexport const setObservable = (\n    object: Observable,\n    path: FieldPath<FieldValues>,\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            let objValue = object[key];\n\n            if (isObservable(objValue)) {\n                objValue = objValue.get();\n            }\n\n            newValue =\n                isObject(objValue) || Array.isArray(objValue)\n                    ? objValue\n                    : !Number.isNaN(+tempPath[index + 1])\n                      ? []\n                      : {};\n        }\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n            return;\n        }\n\n        if (isObservable(object[key])) {\n            object[key].set(newValue);\n        }\n\n        object = object[key] as Observable<FieldValues>;\n    }\n\n    return object;\n};\n","import { isEmptyObject } from './is-empty-object';\nimport { isKey } from './is-key';\nimport { isObject } from './is-object';\nimport { isUndefined } from './is-undefined';\nimport { stringToPath } from './string-to-path';\n\nexport function 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 function isEmptyArray(obj: unknown[]) {\n    for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key) && !isUndefined(obj[key])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nexport function unset(object: any, path: string | (string | number)[]) {\n    const paths = Array.isArray(path) ? path : isKey(path) ? [path] : stringToPath(path);\n\n    const childObject = paths.length === 1 ? object : baseGet(object, paths);\n\n    const index = paths.length - 1;\n    const key = paths[index];\n\n    if (childObject) {\n        delete childObject[key];\n    }\n\n    if (\n        index !== 0 &&\n        ((isObject(childObject) && isEmptyObject(childObject)) ||\n            (Array.isArray(childObject) && isEmptyArray(childObject)))\n    ) {\n        unset(object, paths.slice(0, -1));\n    }\n\n    return object;\n}\n","import { isObservable, Observable } from '@legendapp/state';\n\nimport { isEmptyObject } from './is-empty-object';\nimport { isKey } from './is-key';\nimport { isObject } from './is-object';\nimport { stringToPath } from './string-to-path';\nimport { baseGet, isEmptyArray } from './unset';\n\nexport function unsetObservable(object: Observable, path: string | (string | number)[]) {\n    const paths = Array.isArray(path) ? path : isKey(path) ? [path] : stringToPath(path);\n\n    const childObject$ = paths.length === 1 ? object : baseGet(object, paths);\n    const childObject = childObject$.peek();\n\n    const index = paths.length - 1;\n    const key = paths[index];\n\n    if (childObject && isObservable(childObject$[key])) {\n        Array.isArray(childObject) ? childObject$[key].set(undefined) : childObject$[key].delete();\n    }\n\n    if (\n        index !== 0 &&\n        ((isObject(childObject) && isEmptyObject(childObject)) ||\n            (Array.isArray(childObject) && isEmptyArray(childObject)))\n    ) {\n        unsetObservable(object, paths.slice(0, -1));\n    }\n\n    return object;\n}\n","import React, { createContext } from 'react';\n\nimport type { useForm } from '../hooks/use-form.hook';\nimport type { FieldValues, UseFormReturn } from '../types';\n\nexport const FormContext = createContext<ReturnType<typeof useForm> | null>(null);\n\nexport function FormProvider<\n    TFieldValues extends FieldValues,\n    TTransformedValues extends FieldValues | undefined = undefined,\n>({\n    children,\n    form,\n}: {\n    children: React.ReactNode;\n    form: UseFormReturn<TFieldValues, undefined, TTransformedValues>;\n}): React.ReactNode {\n    return (\n        <FormContext.Provider value={(form as unknown as ReturnType<typeof useForm>) ?? null}>\n            {children}\n        </FormContext.Provider>\n    );\n}\n","import { useContext } from 'react';\n\nimport { FormContext } from '../providers';\nimport type { FieldValues, UseFormReturn } from '../types';\n\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://reacty-form.com/docs/useformcontext)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const form = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider form={form} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport function useFormContext<\n    TFieldValues extends FieldValues,\n    TTransformedValues extends FieldValues | undefined = undefined,\n>(): UseFormReturn<TFieldValues, undefined, TTransformedValues> {\n    return useContext(FormContext) as unknown as UseFormReturn<\n        TFieldValues,\n        undefined,\n        TTransformedValues\n    >;\n}\n","import { useMemo } from 'react';\nimport { type Observable } from '@legendapp/state';\n\nimport type {\n    FieldPath,\n    FieldValues,\n    FormState,\n    PathValue,\n    UseControllerProps,\n    UseControllerReturn,\n    UseFormGetValues,\n    UseFormRegister,\n    UseFormReturn,\n    UseFormStateReturn,\n} from '../types';\nimport { get, isBoolean } from '../utils';\n\nimport { useFormContext } from './use-form-context.hook';\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://reacty-form.com/docs/usecontroller)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n *   const { field, fieldState, formState } = useController(props);\n *   return (\n *     <div>\n *       <input {...field} placeholder={props.name} />\n *       <p>{fieldState.isTouched && \"Touched\"}</p>\n *       <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *     </div>\n *   );\n * }\n * ```\n */\nexport function useController<\n    TFieldValues extends FieldValues = FieldValues,\n    TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: UseControllerProps<TFieldValues, TName>): UseControllerReturn<TFieldValues, TName> {\n    const formContext = useFormContext();\n    const { name, form = formContext, setValueAs, defaultValue, disabled } = props ?? {};\n\n    if (!form) {\n        throw new Error(\n            'Form is not provided, either pass the form in props or wrap you form inside FormProvider',\n        );\n    }\n\n    const formState$ = form.formState$ as Observable<FormState<FieldValues>>;\n\n    const registerProps = useMemo(\n        () =>\n            (form.register as UseFormRegister<TFieldValues>)(name, {\n                setValueAs,\n                ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n            }),\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        [name, formState$.disabled.peek()],\n    );\n\n    const field = {\n        onChange: registerProps.onChange,\n        onBlur: registerProps.onBlur,\n        ref: registerProps.ref,\n        get value() {\n            return (\n                (form.getValues as UseFormGetValues<TFieldValues>)(name) ??\n                defaultValue ??\n                (get(form.control._options.defaultValues, name) as PathValue<TFieldValues, TName>)\n            );\n        },\n        name,\n        get disabled() {\n            const isFormDisabled = form.control._formState.disabled;\n\n            return isBoolean(disabled) || isFormDisabled ? isFormDisabled || disabled : false;\n        },\n    };\n\n    return {\n        field,\n        get fieldState() {\n            return (form as UseFormReturn<FieldValues>).getFieldState(name);\n        },\n        get formState() {\n            return form.control._formState as UseFormStateReturn<TFieldValues>;\n        },\n    };\n}\n","import { createElement } from 'react';\nimport { observer } from '@legendapp/state/react';\n\nimport { useController } from '../hooks/use-controller.hook';\nimport type { ControllerProps, DefaultProps, FieldPath, FieldValues } from '../types';\n\nconst ControllerComponent = <\n    TFieldValues extends FieldValues = FieldValues,\n    TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n    TComponent extends React.FC = React.FC,\n>({\n    name,\n    form,\n    component,\n    componentProps,\n    render,\n    setValueAs,\n}: ControllerProps<TFieldValues, TName, TComponent>): React.ReactNode => {\n    const { field, fieldState, formState } = useController<TFieldValues, TName>({\n        name,\n        form,\n        setValueAs,\n    });\n\n    return render\n        ? render({ field, fieldState, formState })\n        : createElement(component as React.FC<DefaultProps>, { ...componentProps, ...field });\n};\n\nexport const Controller = observer(ControllerComponent);\n","export const EVENTS = {\n    BLUR: 'blur',\n    FOCUS_OUT: 'focusout',\n    CHANGE: 'change',\n} as const;\n\nexport const VALIDATION_MODE = {\n    onBlur: 'onBlur',\n    onChange: 'onChange',\n    onSubmit: 'onSubmit',\n    onTouched: 'onTouched',\n} as const;\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} as const;\n","import { batch, type Observable, type RecursiveValueOrFunction } from '@legendapp/state';\n\nimport type {\n    FieldArray,\n    FieldArrayPath,\n    FieldValues,\n    UseFieldArrayMove,\n    UseFieldArrayProps,\n    UseFieldArrayRemove,\n    UseFieldArrayReplace,\n    UseFieldArrayReturn,\n    UseFieldArraySwap,\n    UseFieldArrayUpdate,\n} from '../types';\nimport { cloneObject, convertToArrayPayload, get } from '../utils';\n\nimport { useFormContext } from './use-form-context.hook';\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/reacty-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://reacty-form.com/docs/usefieldarray)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const form = useForm({\n *     defaultValues: {\n *       test: []\n *     }\n *   });\n *   const { fields, append } = useFieldArray({\n *     form,\n *     name: \"test\"\n *   });\n *\n *   return (\n *     <form onSubmit={handleSubmit(data => console.log(data))}>\n *       {fields.map((item, index) => (\n *          <input key={item.id} {...form.register(`test.${index}.firstName`)}  />\n *       ))}\n *       <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n *         append\n *       </button>\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nexport function useFieldArray<\n    TFieldValues extends FieldValues = FieldValues,\n    TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n>(\n    props: UseFieldArrayProps<TFieldValues, TFieldArrayName>,\n): Omit<UseFieldArrayReturn<TFieldValues, TFieldArrayName>, 'fields'> {\n    const formContext = useFormContext();\n    const { name, form = formContext } = props ?? {};\n\n    if (!form) {\n        throw new Error(\n            'Form is not provided, either pass the form in props or wrap you form inside FormProvider',\n        );\n    }\n\n    const _getWithIndex = (\n        index: number,\n    ): Observable<Partial<FieldArray<FieldValues, FieldArrayPath<FieldValues>>>> => {\n        return get(form.values$, `${name}.${index}`) as Observable<\n            Partial<FieldArray<FieldValues, FieldArrayPath<FieldValues>>>\n        >;\n    };\n\n    const _get = (): Observable<Array<Partial<FieldArray<TFieldValues, TFieldArrayName>>>> => {\n        return get(form.values$, name) as Observable<\n            Array<Partial<FieldArray<TFieldValues, TFieldArrayName>>>\n        >;\n    };\n\n    const append = (\n        value:\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    ): void => {\n        const appendValue = convertToArrayPayload(cloneObject(value));\n\n        batch(() => {\n            for (const item of appendValue) {\n                _get()?.push(item);\n            }\n        });\n    };\n\n    const prepend = (\n        value:\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    ): void => {\n        const appendValue = convertToArrayPayload(cloneObject(value));\n\n        batch(() => {\n            for (const item of appendValue) {\n                _get()?.unshift(item);\n            }\n        });\n    };\n\n    const insert = (\n        index: number,\n        value:\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    ): void => {\n        const appendValue = convertToArrayPayload(cloneObject(value));\n\n        batch(() => {\n            _get()?.splice(index, 0, ...appendValue);\n        });\n    };\n\n    const remove: UseFieldArrayRemove = (index?: number | Array<number>): void => {\n        if (index === undefined) {\n            _get().set([]);\n        }\n\n        let indexCounter = 0;\n        const indexes = convertToArrayPayload(index) as Array<number>;\n\n        batch(() => {\n            for (const i of indexes) {\n                _get().splice(i - indexCounter, 1);\n\n                indexCounter++;\n            }\n        });\n    };\n\n    const replace: UseFieldArrayReplace<TFieldValues, TFieldArrayName> = (\n        value:\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    ): void => {\n        const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n\n        _get().set(\n            updatedFieldArrayValues as RecursiveValueOrFunction<\n                Partial<FieldArray<TFieldValues, TFieldArrayName>>[]\n            >,\n        );\n    };\n\n    const update: UseFieldArrayUpdate<TFieldValues, TFieldArrayName> = (\n        index: number,\n        value:\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n            | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    ): void => {\n        _getWithIndex(index).set(value);\n    };\n\n    const swap: UseFieldArraySwap = (indexA: number, indexB: number): void => {\n        batch(() => {\n            const temp = _getWithIndex(indexA)?.peek();\n\n            _getWithIndex(indexA).set(_getWithIndex(indexB)?.peek());\n            _getWithIndex(indexB).set(temp);\n        });\n    };\n\n    const move: UseFieldArrayMove = (from: number, to: number): void => {\n        batch(() => {\n            const arr = _get();\n\n            if (arr.length === 0) {\n                return;\n            }\n\n            arr.splice(to, 0, _get().splice(from, 1)[0]);\n        });\n    };\n\n    return { append, prepend, insert, remove, replace, update, swap, move };\n}\n","import { isUndefined } from '../utils/is-undefined';\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 const getCheckboxValue = (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 {\n    deepEqual,\n    isNullOrUndefined,\n    isObject,\n    isPrimitive,\n    isUndefined,\n    objectHasFunction,\n} from '../utils';\n\nfunction markFieldsDirty<T>(data: T, fields: Record<string, any> = {}) {\n    const isParentNodeArray = Array.isArray(data);\n\n    if (isObject(data) || isParentNodeArray) {\n        for (const key in data) {\n            if (\n                Array.isArray(data[key]) ||\n                (isObject(data[key]) && !objectHasFunction(data[key]))\n            ) {\n                fields[key] = Array.isArray(data[key]) ? [] : {};\n                markFieldsDirty(data[key], fields[key]);\n            } else if (!isNullOrUndefined(data[key])) {\n                fields[key] = true;\n            }\n        }\n    }\n\n    return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues<T>(\n    data: T,\n    formValues: T,\n    dirtyFieldsFromValues: Record<\n        Extract<keyof T, string>,\n        ReturnType<typeof markFieldsDirty> | boolean\n    >,\n) {\n    const isParentNodeArray = Array.isArray(data);\n\n    if (isObject(data) || isParentNodeArray) {\n        for (const key in data) {\n            if (\n                Array.isArray(data[key]) ||\n                (isObject(data[key]) && !objectHasFunction(data[key]))\n            ) {\n                if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n                    dirtyFieldsFromValues[key] = Array.isArray(data[key])\n                        ? markFieldsDirty(data[key], [])\n                        : { ...markFieldsDirty(data[key]) };\n                } else {\n                    getDirtyFieldsFromDefaultValues(\n                        data[key],\n                        isNullOrUndefined(formValues) ? {} : formValues[key],\n                        dirtyFieldsFromValues[key],\n                    );\n                }\n            } else {\n                dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n            }\n        }\n    }\n\n    return dirtyFieldsFromValues;\n}\n\nexport const getDirtyFields = <T>(defaultValues: T, formValues: T) =>\n    getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n","import { isCheckBoxInput, isObject } from '../utils';\n\ntype Event = { target: { checked: boolean; value: string; name: string } };\n\nexport const getEventValue = (event: unknown): 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","import { Field, NativeFieldValue } from '../types';\nimport { isString, isUndefined } from '../utils';\n\nexport const getFieldValueAs = <T extends NativeFieldValue>(\n    value: T,\n    { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n    isUndefined(value)\n        ? value\n        : valueAsNumber\n          ? value === ''\n              ? NaN\n              : value\n                ? +value\n                : value\n          : valueAsDate && isString(value)\n            ? new Date(value)\n            : setValueAs\n              ? setValueAs(value)\n              : value;\n","type RadioFieldResult = {\n    isValid: boolean;\n    value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n    isValid: false,\n    value: null,\n};\n\nexport const getRadioValue = (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 {\n    isCheckBoxInput,\n    isFileInput,\n    isMultipleSelect,\n    isRadioInput,\n    isUndefined,\n} from '../utils';\n\nimport { getCheckboxValue } from './get-checkbox-value';\nimport { getFieldValueAs } from './get-field-value-as';\nimport { getRadioValue } from './get-radio-value';\n\nexport 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 (isCheckBoxInput(ref)) {\n        return getCheckboxValue(_f.refs).value;\n    }\n\n    return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n","export const isRegex = (value: unknown): value is RegExp => value instanceof RegExp;\n","import { ValidationRule, ValidationValue, ValidationValueMessage } from '../types';\nimport { isObject } from '../utils/is-object';\nimport { isRegex } from '../utils/is-regex';\nimport { isUndefined } from '../utils/is-undefined';\n\nexport const getRuleValue = <T extends ValidationValue>(\n    rule?: ValidationRule<T> | ValidationValueMessage<T>,\n) =>\n    isUndefined(rule)\n        ? rule\n        : isRegex(rule)\n          ? rule.source\n          : isObject(rule)\n            ? isRegex(rule.value)\n                ? rule.value.source\n                : rule.value\n            : rule;\n","import { useMemo } from 'react';\nimport { batch, isBoolean, type Observable, ObservableHint } from '@legendapp/state';\nimport { useObservable, useObserve } from '@legendapp/state/react';\n\nimport { VALIDATION_MODE } from '../constants';\nimport { getDirtyFields, getEventValue, getFieldValue, getFieldValueAs } from '../logic';\nimport { getRuleValue } from '../logic/get-rule-value';\nimport type {\n    Field,\n    FieldError,\n    FieldErrors,\n    FieldPath,\n    FieldRefs,\n    FieldValues,\n    FormState,\n    InternalFieldName,\n    Path,\n    PathValue,\n    Ref,\n    Resolver,\n    ResolverResult,\n    UseFormGetFieldState,\n    UseFormGetObservable,\n    UseFormGetValues,\n    UseFormHandleSubmit,\n    UseFormProps,\n    UseFormReturn,\n    UseFormSetFocus,\n    UseFormSetValue,\n} from '../types';\nimport type {\n    Control,\n    DefaultValues,\n    GetIsDirty,\n    SetFieldValue,\n    SetValueConfig,\n    UseFormClearErrors,\n    UseFormRegister,\n    UseFormReset,\n    UseFormResetField,\n    UseFormSetError,\n    UseFormTrigger,\n} from '../types/form';\nimport {\n    cloneObject,\n    convertToArrayPayload,\n    deepEqual,\n    get,\n    isCheckBoxInput,\n    isEmptyObject,\n    isFileInput,\n    isFunction,\n    isHTMLElement,\n    isMultipleSelect,\n    isNullOrUndefined,\n    isRadioOrCheckbox,\n    isString,\n    isUndefined,\n    live,\n    set,\n    setObservable,\n    unsetObservable,\n} from '../utils';\n\nconst defaultOptions = {\n    mode: VALIDATION_MODE.onSubmit,\n    reValidateMode: VALIDATION_MODE.onChange,\n};\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://reacty-form.com/docs/useform)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, formState: { errors } } = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input defaultValue=\"test\" {...register(\"example\")} />\n *       <input {...register(\"exampleRequired\", { required: true })} />\n *       {errors.exampleRequired && <span>This field is required</span>}\n *       <button>Submit</button>\n *     </form>\n *   );\n * }\n * ```\n */\nexport function useForm<\n    TFieldValues extends FieldValues = FieldValues,\n    TContext = any,\n    TTransformedValues extends FieldValues | undefined = undefined,\n>(\n    props?: Readonly<UseFormProps<TFieldValues>>,\n): UseFormReturn<TFieldValues, TContext, TTransformedValues> {\n    let _options = { ...defaultOptions, ...props };\n    const initialValues = useMemo<Partial<TFieldValues>>(\n        () => cloneObject(props?.defaultValues ?? props?.values ?? {}),\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        [],\n    );\n    const { disabled = false, values, defaultValues = {}, resetOptions, resolver } = _options;\n    const values$ = useObservable<Partial<TFieldValues>>(\n        cloneObject(values ?? (defaultValues as Partial<TFieldValues>)),\n    ) as Observable<Partial<TFieldValues>>;\n    const fields$ = useObservable<FieldRefs>({});\n    const formState$ = useObservable<FormState<TFieldValues>>({\n        errors: {},\n        touchedFields: {},\n        dirtyFields: {},\n        validatingFields: {},\n        isDirty: false,\n        isValid: false,\n        isSubmitting: false,\n        isSubmitted: false,\n        isSubmitSuccessful: false,\n        isLoading: false,\n        isValidating: false,\n        disabled,\n        submitCount: 0,\n    });\n    const {\n        errors: errors$,\n        touchedFields: touchedFields$,\n        dirtyFields: dirtyFields$,\n        isDirty: isDirty$,\n        isValid: isValid$,\n        isSubmitting: isSubmitting$,\n        isSubmitted: isSubmitted$,\n        isSubmitSuccessful: isSubmitSuccessful$,\n        isLoading: isLoading$,\n        disabled: disabled$,\n        submitCount: submitCount$,\n    } = formState$ as unknown as Observable<FormState<FieldValues>>;\n\n    const _setErrors = (errors: FieldErrors<FieldValues>): void => {\n        errors$.set(errors);\n    };\n\n    const _resolver = (fieldValues: TFieldValues): Promise<ResolverResult<TFieldValues>> => {\n        if (!resolver) {\n            return Promise.resolve({ errors: {}, values: fieldValues });\n        }\n\n        return (resolver as Resolver<TFieldValues, TTransformedValues>)(fieldValues, undefined, {\n            fields: {},\n            shouldUseNativeValidation: undefined,\n            criteriaMode: _options.criteriaMode,\n        }) as Promise<ResolverResult<TFieldValues>>;\n    };\n\n    const _getDirty: GetIsDirty = (name, data) => {\n        const value$ = get(values$, name);\n\n        if (disabled) {\n            return false;\n        }\n\n        name && data && value$.set(data);\n\n        return !deepEqual(values$.get(), initialValues);\n    };\n\n    const _updateValid = async (shouldUpdateValid?: boolean) => {\n        if (!disabled && (isValid$.get() || shouldUpdateValid)) {\n            if (!resolver) {\n                return;\n            }\n            const isValid = isEmptyObject((await _resolver(initialValues as TFieldValues)).errors);\n\n            if (isValid !== isValid$.get()) {\n                isValid$.set(isValid);\n            }\n        }\n    };\n\n    const _updateFormState = (updatedFormState: Partial<FormState<TFieldValues>>) => {\n        const previousFormState = formState$.get();\n\n        formState$.set({\n            ...(previousFormState as FormState<TFieldValues>),\n            ...updatedFormState,\n        } as typeof previousFormState);\n    };\n\n    const updateTouchAndDirty = (\n        name: InternalFieldName,\n        fieldValue: unknown,\n        isBlurEvent?: boolean,\n        shouldDirty?: boolean,\n    ): Partial<Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>> => {\n        let shouldUpdateField = false;\n        let isPreviousDirty = false;\n        const output: Partial<FormState<TFieldValues>> & { name: string } = {\n            name,\n        };\n\n        batch(() => {\n            if (disabled) {\n                const disabledField$ = get(fields$, name);\n                const disabledField = Boolean(disabledField$.get()?._f?.disabled);\n\n                if (!isBlurEvent || shouldDirty) {\n                    const isDirty = isDirty$.get();\n\n                    if (isDirty) {\n                        isPreviousDirty = isDirty;\n                        const isDirtyValue = _getDirty();\n                        output.isDirty = isDirtyValue;\n\n                        isDirty$.set(isDirtyValue);\n\n                        shouldUpdateField = isPreviousDirty !== output.isDirty;\n                    }\n\n                    const isCurrentFieldPristine =\n                        disabledField || deepEqual(get(defaultValues, name), fieldValue);\n                    const dirtyFields = dirtyFields$.get();\n                    const dirtyField$ = get(dirtyFields$, name);\n\n                    isPreviousDirty = !!(!disabledField && get(dirtyFields, name));\n                    isCurrentFieldPristine || disabledField\n                        ? dirtyField$?.delete()\n                        : dirtyField$.set(true);\n                    output.dirtyFields = dirtyFields as Partial<\n                        FormState<TFieldValues>\n                    >['dirtyFields'];\n                    shouldUpdateField =\n                        shouldUpdateField ||\n                        (dirtyFields && isPreviousDirty !== !isCurrentFieldPristine);\n                }\n            }\n\n            if (isBlurEvent) {\n                const isPreviousFieldTouched$ = get(touchedFields$, name);\n                const isPreviousFieldTouched = isPreviousFieldTouched$.get();\n                const touchedFields = touchedFields$.get();\n\n                if (!isPreviousFieldTouched) {\n                    isPreviousFieldTouched$.set(isBlurEvent);\n                    output.touchedFields = touchedFields as Partial<\n                        FormState<TFieldValues>\n                    >['touchedFields'];\n                    shouldUpdateField =\n                        shouldUpdateField ||\n                        (touchedFields && isPreviousFieldTouched !== isBlurEvent);\n                }\n            }\n        });\n\n        return shouldUpdateField ? output : {};\n    };\n\n    const _updateDisabledField: Control<TFieldValues>['_updateDisabledField'] = ({\n        disabled,\n        name,\n        field,\n        fields,\n        value,\n    }) => {\n        if (isBoolean(disabled)) {\n            const inputValue = disabled\n                ? undefined\n                : isUndefined(value)\n                  ? getFieldValue(field ? field._f : get(fields, name)._f)\n                  : value;\n            if (disabled || (!disabled && !isUndefined(inputValue))) {\n                const value = get(values$, name);\n\n                value.set(inputValue);\n            }\n\n            updateTouchAndDirty(name, inputValue, false, false);\n        }\n    };\n\n    const _resetDefaultValues = () =>\n        isFunction(defaultValues) &&\n        (_options.defaultValues as () => Promise<TFieldValues>)().then((values: TFieldValues) => {\n            reset(values, resetOptions);\n        });\n\n    const _executeSchemaAndUpdateState = async (names?: Array<InternalFieldName>) => {\n        const { errors } = await _resolver(values$.get() as TFieldValues);\n\n        if (names) {\n            for (const name of names) {\n                const error: FieldError = get(errors, name);\n\n                if (!error || isEmptyObject(error)) {\n                    unsetObservable(errors$, name);\n\n                    continue;\n                }\n\n                setObservable(errors$, name, error);\n            }\n        } else {\n            _setErrors(errors);\n        }\n\n        return errors;\n    };\n\n    const setFieldValue = (\n        name: InternalFieldName,\n        value: SetFieldValue<TFieldValues>,\n        options: SetValueConfig = {},\n    ) => {\n        const field$: Observable<Field> = get(fields$, name);\n        const field: Field = field$.get();\n        let fieldValue: unknown = value;\n\n        if (field) {\n            const fieldReference = field._f;\n\n            if (fieldReference) {\n                !fieldReference.disabled &&\n                    setObservable(\n                        values$ as Observable,\n                        name,\n                        getFieldValueAs(value, fieldReference),\n                    );\n\n                fieldValue =\n                    isHTMLElement(fieldReference.ref) && isNullOrUndefined(value) ? '' : value;\n\n                if (isMultipleSelect(fieldReference.ref)) {\n                    [...fieldReference.ref.options].forEach(\n                        (optionRef) =>\n                            (optionRef.selected = (fieldValue as InternalFieldName[]).includes(\n                                optionRef.value,\n                            )),\n                    );\n                } else if (fieldReference.refs) {\n                    if (isCheckBoxInput(fieldReference.ref)) {\n                        fieldReference.refs.length > 1\n                            ? fieldReference.refs.forEach(\n                                  (checkboxRef) =>\n                                      (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\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] &&\n                              (fieldReference.refs[0].checked = !!fieldValue);\n                    } else {\n                        fieldReference.refs.forEach(\n                            (radioRef: HTMLInputElement) =>\n                                (radioRef.checked = radioRef.value === fieldValue),\n                        );\n                    }\n                } else if (isFileInput(fieldReference.ref)) {\n                    fieldReference.ref.value = '';\n                } else {\n                    fieldReference.ref.value = fieldValue;\n                }\n            }\n        }\n\n        (options.shouldDirty || options.shouldTouch) &&\n            updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty);\n\n        options.shouldValidate && trigger(name as Path<TFieldValues>);\n    };\n\n    const updateValidAndValue = (\n        name: InternalFieldName,\n        shouldSkipSetValueAs: boolean,\n        value?: unknown,\n        ref?: Ref,\n    ) => {\n        const field$: Observable<Field> = get(fields$, name);\n        const field: Field = field$.get();\n\n        if (field) {\n            const defaultValue =\n                get(values$, name)?.get() ??\n                (isUndefined(value) ? get(defaultValues, name) : value);\n\n            isUndefined(defaultValue) ||\n            (ref && (ref as HTMLInputElement).defaultChecked) ||\n            shouldSkipSetValueAs\n                ? setObservable(\n                      values$ as Observable,\n                      name,\n                      shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n                  )\n                : setFieldValue(name, defaultValue);\n\n            _updateValid();\n        }\n    };\n\n    useObserve(values$, async ({ value }) => {\n        const { errors } = await _resolver(value as TFieldValues);\n\n        if (!isDirty$.get() || disabled === true) {\n            return;\n        }\n\n        batch(() => {\n            if (isSubmitted$.get()) {\n                _setErrors(errors);\n            }\n\n            if (isEmptyObject(errors)) {\n                isValid$.set(true);\n\n                return;\n            }\n\n            isValid$.set(false);\n        });\n    });\n\n    const handleSubmit: UseFormHandleSubmit<TFieldValues, TTransformedValues> =\n        (onValid, onInvalid) => async (e) => {\n            if (e) {\n                e.preventDefault?.();\n                e.persist?.();\n            }\n\n            isLoading$.set(true);\n\n            let onValidError: unknown;\n\n            const { errors, values: fieldValues } = await _resolver(values$.get());\n\n            batch(async () => {\n                _setErrors(errors);\n\n                isDirty$.set(true);\n                isSubmitting$.set(true);\n                disabled$.set(true);\n            });\n\n            const isEmptyErrors = isEmptyObject(errors);\n\n            if (isEmptyErrors) {\n                try {\n                    await onValid(fieldValues as TFieldValues, e);\n\n                    isSubmitSuccessful$.set(true);\n                } catch (error) {\n                    onValidError = error;\n                }\n            }\n\n            batch(() => {\n                isSubmitting$.set(false);\n                disabled$.set(false);\n                isSubmitted$.set(true);\n                submitCount$.set(submitCount$.get() + 1);\n                isLoading$.set(false);\n            });\n\n            if (!isEmptyErrors) {\n                await onInvalid?.(errors as FieldErrors<TFieldValues>, e);\n            }\n\n            if (onValidError) {\n                throw onValidError;\n            }\n        };\n\n    const setValue: UseFormSetValue<TFieldValues> = (name, value, options = {}): void => {\n        const field: Observable = get(values$, name);\n        const cloneValue = cloneObject(value);\n\n        batch(() => {\n            field.set(cloneValue);\n\n            setFieldValue(name, cloneValue, options);\n\n            isDirty$.set(_getDirty(name, value));\n\n            dirtyFields$.set(getDirtyFields(defaultValues, values$.get()));\n        });\n    };\n\n    const setFocus: UseFormSetFocus<TFieldValues> = (name, options = {}) => {\n        const field = get(fields$, name)?.get();\n        const fieldReference = field?._f;\n\n        if (fieldReference) {\n            const fieldRef = fieldReference.refs ? fieldReference.refs[0] : fieldReference.ref;\n\n            if (fieldRef.focus) {\n                fieldRef.focus();\n                options.shouldSelect && isFunction(fieldRef.select) && fieldRef.select();\n            }\n        }\n    };\n\n    const getValues: UseFormGetValues<TFieldValues> = (\n        fieldNames?: FieldPath<TFieldValues> | ReadonlyArray<FieldPath<TFieldValues>>,\n    ) => {\n        if (isUndefined(fieldNames)) {\n            return values$.get();\n        }\n\n        if (isString(fieldNames)) {\n            return (get(values$, fieldNames) as Observable)?.get();\n        }\n\n        return fieldNames.map((name) => (get(values$, name) as Observable)?.get());\n    };\n\n    const getObservable: UseFormGetObservable<TFieldValues> = (\n        fieldNames?: FieldPath<TFieldValues> | ReadonlyArray<FieldPath<TFieldValues>>,\n    ) => {\n        if (isUndefined(fieldNames)) {\n            return values$;\n        }\n\n        if (isString(fieldNames)) {\n            return get(values$, fieldNames);\n        }\n\n        return fieldNames.map((name) => get(values$, name));\n    };\n\n    const peekValues: UseFormGetValues<TFieldValues> = (\n        fieldNames?: FieldPath<TFieldValues> | ReadonlyArray<FieldPath<TFieldValues>>,\n    ) => {\n        if (isUndefined(fieldNames)) {\n            return values$.peek();\n        }\n\n        if (isString(fieldNames)) {\n            return (get(values$, fieldNames) as Observable)?.peek();\n        }\n\n        return fieldNames.map((name) => (get(values$, name) as Observable)?.peek());\n    };\n\n    const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n        const currentError: FieldError = get(errors$, name)?.get() ?? {};\n\n        const { message, type, ...restOfErrorTree } = currentError;\n\n        setObservable(errors$, name, { ...restOfErrorTree, ...error });\n\n        if (options?.shouldFocus) {\n            const field$: Observable<Field> = get(fields$, name);\n\n            const field = field$.get();\n\n            if (field?._f?.ref?.focus) {\n                (field._f.ref.focus as (options?: FocusOptions) => void)();\n            }\n        }\n    };\n\n    const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n        if (!name) {\n            errors$.set({});\n\n            return;\n        }\n\n        const nameArr = convertToArrayPayload(name);\n\n        for (const fieldName of nameArr) {\n            const currentError: Observable<FieldError> = get(errors$, fieldName as string);\n\n            if (!currentError?.get()) {\n                continue;\n            }\n\n            currentError.delete();\n        }\n    };\n\n    const trigger: UseFormTrigger<TFieldValues> = async (name, options) => {\n        let isValid = !resolver;\n        let validationResult = !resolver;\n        const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n        if (resolver) {\n            const errors = await _executeSchemaAndUpdateState(\n                isUndefined(name) ? name : fieldNames,\n            );\n\n            isValid = isEmptyObject(errors);\n            validationResult = name ? !fieldNames.some((name) => get(errors, name)) : isValid;\n\n            isValid$.set(isValid);\n        }\n\n        if (options?.shouldFocus && !validationResult) {\n            batch(() => {\n                for (const fieldName of fieldNames) {\n                    const field$: Observable<Field> = get(fields$, fieldName);\n\n                    const field = field$.get();\n\n                    if (field?._f?.ref?.focus) {\n                        (field._f.ref.focus as (options?: FocusOptions) => void)();\n                    }\n                }\n            });\n        }\n\n        isValid$.set(isValid);\n\n        return validationResult;\n    };\n\n    const resetField: UseFormResetField<TFieldValues> = (name, options = {}) => {\n        batch(() => {\n            if (isUndefined(options.defaultValue)) {\n                setObservable(values$ as Observable, name, cloneObject(get(initialValues, name)));\n            } else {\n                setObservable(values$ as Observable, name, options.defaultValue);\n\n                set(initialValues, name, cloneObject(options.defaultValue));\n            }\n\n            if (!options.keepTouched) {\n                const field = get(touchedFields$, name);\n\n                field?.set(false);\n            }\n\n            if (!options.keepDirty) {\n                const field$ = get(dirtyFields$, name);\n\n                field$?.set(false);\n                isDirty$.set(\n                    options.defaultValue\n                        ? _getDirty(name, cloneObject(get(initialValues, name)))\n                        : _getDirty(),\n                );\n            }\n\n            if (!options.keepError) {\n                const field = get(dirtyFields$, name);\n                const isValid = isValid$.get();\n\n                field?.delete();\n\n                if (isValid) {\n                    _updateValid();\n                }\n            }\n        });\n    };\n\n    const reset: UseFormReset<TFieldValues> = (\n        formValues,\n        keepStateOptions = resetOptions,\n    ): void => {\n        const updatedValues = formValues ? cloneObject(formValues) : defaultValues;\n        const cloneUpdatedValues = cloneObject(updatedValues);\n        const isEmptyResetValues = isEmptyObject(formValues);\n        const values = isEmptyResetValues ? defaultValues : cloneUpdatedValues;\n\n        batch(() => {\n            isSubmitting$.set(false);\n\n            if (!keepStateOptions?.keepErrors) {\n                errors$.set({});\n            }\n\n            if (!keepStateOptions?.keepTouched) {\n                touchedFields$.set({});\n            }\n\n            if (!keepStateOptions?.keepDirtyValues) {\n                dirtyFields$.set({});\n            }\n\n            if (!keepStateOptions?.keepDirty) {\n                isDirty$.set(false);\n            }\n\n            if (!keepStateOptions?.keepValues) {\n                (values$ as Observable).set(cloneObject(values));\n            }\n\n            if (!keepStateOptions?.keepIsSubmitted) {\n                isSubmitted$.set(false);\n            }\n\n            if (!keepStateOptions?.keepIsSubmitSuccessful) {\n                isSubmitSuccessful$.set(false);\n            }\n        });\n    };\n\n    const getFieldState: UseFormGetFieldState<TFieldValues> = (name) => {\n        return {\n            invalid: !!get(errors$, name)?.get(),\n            isDirty: !!get(dirtyFields$, name)?.get(),\n            error: get(errors$, name)?.get() as FieldError,\n            isTouched: !!get(touchedFields$, name)?.get(),\n        };\n    };\n\n    const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\n        const field$ = get(fields$, name);\n        const field = field$.get() ?? {};\n        const disabledIsDefined = isBoolean(disabled) || isBoolean(_options.disabled);\n\n        setObservable(\n            fields$,\n            name,\n            ObservableHint.opaque({\n                ...field,\n                _f: {\n                    ...(field && field._f ? field._f : { ref: { name } }),\n                    name,\n                    mount: true,\n                    ...options,\n                },\n            }),\n        );\n\n        if (field) {\n            _updateDisabledField({\n                field,\n                disabled: isBoolean(options.disabled) ? options.disabled : _options.disabled,\n                name,\n                value: options.value,\n            });\n        }\n\n        return {\n            ...(disabledIsDefined ? { disabled: options.disabled || _options.disabled } : {}),\n            ...((_options.progressive ?? true)\n                ? {\n                      required: !!options.required,\n                      min: getRuleValue(options.min),\n                      max: getRuleValue(options.max),\n                      minLength: getRuleValue<number>(options.minLength) as number,\n                      maxLength: getRuleValue(options.maxLength) as number,\n                      pattern: getRuleValue(options.pattern) as string,\n                  }\n                : {}),\n            name,\n            onChange: async (e: { target: any }) => {\n                let value = getEventValue(e);\n\n                if (options.setValueAs) {\n                    value = options.setValueAs(value);\n                }\n\n                setValue(name, value as PathValue<TFieldValues, FieldPath<TFieldValues>>);\n\n                if (\n                    isSubmitted$.peek()\n                        ? _options.reValidateMode === 'onChange'\n                        : _options.mode === 'onChange'\n                ) {\n                    await _executeSchemaAndUpdateState([name]);\n                }\n\n                return undefined;\n            },\n            onBlur: async () => {\n                batch(async () => {\n                    const field = get(touchedFields$, name);\n\n                    if (_options.mode === 'onTouched' && !field?.peek()) {\n                        await _executeSchemaAndUpdateState([name]);\n                    }\n\n                    if (\n                        isSubmitted$.peek()\n                            ? _options.reValidateMode === 'onBlur'\n                            : _options.mode === 'onBlur'\n                    ) {\n                        await _executeSchemaAndUpdateState([name]);\n                    }\n\n                    field?.peek() ? field.set(true) : setObservable(touchedFields$, name, true);\n                });\n\n                return undefined;\n            },\n            ref: (ref: HTMLInputElement | null): void => {\n                if (ref) {\n                    const field = field$.get() ?? {};\n\n                    const fieldRef = isUndefined(ref.value)\n                        ? ref.querySelectorAll\n                            ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n                            : ref\n                        : ref;\n                    const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n                    const refs = field._f?.refs || [];\n\n                    if (\n                        radioOrCheckbox\n                            ? refs.find((option: Ref) => option === fieldRef)\n                            : fieldRef === field._f?.ref\n                    ) {\n                        return;\n                    }\n\n                    setObservable(\n                        fields$,\n                        name,\n                        ObservableHint.opaque({\n                            _f: {\n                                ...field._f,\n                                ...(radioOrCheckbox\n                                    ? {\n                                          refs: [\n                                              ...refs.filter(live),\n                                              fieldRef,\n                                              ...(Array.isArray(get(defaultValues, name))\n                                                  ? [{}]\n                                                  : []),\n                                          ],\n                                          ref: { type: fieldRef.type, name },\n                                      }\n                                    : { ref: fieldRef }),\n                            },\n                        }),\n                    );\n\n                    updateValidAndValue(name, false, undefined, fieldRef);\n                }\n            },\n        };\n    };\n\n    return {\n        formState$,\n        values$,\n        get formState() {\n            return formState$.get() as FormState<TFieldValues>;\n        },\n        get values() {\n            return values$.get();\n        },\n        register,\n        handleSubmit,\n        setValue,\n        getValues,\n        getObservable,\n        peekValues,\n        setFocus,\n        setError,\n        clearErrors,\n        trigger,\n        resetField,\n        reset,\n        getFieldState,\n        control: {\n            getFieldState,\n            handleSubmit,\n            setError,\n            _executeSchemaAndUpdateState,\n            _getDirty,\n            _updateValid,\n            _setErrors,\n            _resetDefaultValues,\n            _reset: reset,\n            _updateFormState,\n            _updateDisabledField,\n            _resolver,\n            get _formValues() {\n                return values$.get();\n            },\n            get _defaultValues() {\n                return defaultValues as Partial<DefaultValues<TFieldValues>>;\n            },\n            get _formState() {\n                return formState$.get() as FormState<TFieldValues>;\n            },\n            set _formState(value) {\n                formState$.set(value as Parameters<typeof formState$.set>[0]);\n            },\n            get _fields() {\n                return fields$.get();\n            },\n            set _fields(value) {\n                fields$.set(ObservableHint.opaque(value));\n            },\n            get _options() {\n                return _options;\n            },\n            set _options(value) {\n                _options = {\n                    ...defaultOptions,\n                    ...props,\n                    ...value,\n                };\n            },\n        },\n    };\n}\n","import type { FieldValues, UseFormStateProps, UseFormStateReturn } from '../types';\n\nimport { useFormContext } from './use-form-context.hook';\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://reacty-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, control } = useForm({\n *     defaultValues: {\n *     firstName: \"firstName\"\n *   }});\n *   const { dirtyFields } = useFormState({\n *     control\n *   });\n *   const onSubmit = (data) => console.log(data);\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input {...register(\"firstName\")} placeholder=\"First Name\" />\n *       {dirtyFields.firstName && <p>Field is dirty.</p>}\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nexport function useFormState<TFieldValues extends FieldValues = FieldValues>(\n    props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n    const formContext = useFormContext();\n    const { form = formContext } = props ?? {};\n\n    if (!form) {\n        throw new Error(\n            'Form is not provided, either pass the form in props or wrap you form inside FormProvider',\n        );\n    }\n\n    return form.formState$.get() as UseFormStateReturn<TFieldValues>;\n}\n","import type { ObserveEventCallback } from '@legendapp/state';\nimport { useObserve } from '@legendapp/state/react';\n\nimport type { FieldPath, FieldValues, UseWatchProps } from '../types';\n\nimport { useFormContext } from './use-form-context.hook';\n\nexport function useWatch<TFieldValues extends FieldValues>(\n    props: UseWatchProps<TFieldValues>,\n    callback: (e: ObserveEventCallback<TFieldValues>) => void,\n): ReturnType<typeof useObserve<TFieldValues>> {\n    const formContext = useFormContext<TFieldValues>();\n    const { name, form = formContext } = props ?? {};\n\n    if (!form) {\n        throw new Error(\n            'Form is not provided, either pass the form in props or wrap you form inside FormProvider',\n        );\n    }\n\n    const observer = form.getObservable(name as FieldPath<TFieldValues>);\n\n    return useObserve(observer, callback);\n}\n"],"names":["isBoolean"],"mappings":"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"}