{"version":3,"file":"index.esm.mjs","sources":["../src/utils/use-context-selector/createContext.tsx","../src/utils/dequalLite.ts","../src/utils/use-context-selector/useContextSelector.tsx","../src/contexts/niceform.tsx","../src/hooks/useNiceformContext.ts","../src/hooks/useDataRefByContext.ts","../src/hooks/useComputeInputedValueHandler.ts","../src/utils/debounce.ts","../src/utils/getDependentFieldsBy.ts","../src/utils/flattenJson.ts","../src/utils/unflattenJson.ts","../src/utils/getOutputtedValues.ts","../src/utils/isFieldActive.ts","../src/utils/normalizeFieldPayload.ts","../src/utils/isObject.ts","../src/utils/getEventValue.ts","../src/hooks/useDebounceChangeFieldHandler.ts","../src/hooks/useForm/useForm.ts","../src/hooks/useForm/useController.ts","../src/hooks/useInactiveFieldHandler.ts","../src/useField.ts","../src/components/RenderReactElement.tsx","../src/hooks/useDataRef.ts","../src/hooks/useChangeField.ts","../src/hooks/useDependentFieldsToClear.ts","../src/hooks/useInitialValues.ts","../src/utils/ManyKeysMap.ts","../src/hooks/useMemoize.ts","../src/hooks/useMemoizeCallback.ts","../src/hooks/useOnErrorDuringSubmit.ts","../src/create.ts"],"sourcesContent":["import React, {\n    createContext as createContextOriginal,\n    useEffect,\n    useRef\n} from \"react\";\n\nimport { Listener } from \"./types\";\n\nfunction createProvider<T>(ProviderOriginal: React.Context<any>['Provider']) {\n    return ({ value, children }) => {\n        const valueRef = useRef<T>(value);\n        const listenersRef = useRef(new Set<Listener>());\n        const contextValue = useRef({\n            value: valueRef,\n            registerListener: (listener: Listener) => {\n                listenersRef.current.add(listener);\n                return () => listenersRef.current.delete(listener);\n            }\n        });\n\n        useEffect(() => {\n            valueRef.current = value;\n            listenersRef.current.forEach((listener) => {\n                listener(value);\n            });\n        }, [value]);\n\n        return (\n            <ProviderOriginal value={contextValue.current}>\n                {children}\n            </ProviderOriginal>\n        );\n    };\n}\n\nexport default function createContext<T>(defaultValue: T) {\n    const context = createContextOriginal(defaultValue);\n\n    delete (context as Partial<typeof context>).Consumer;\n\n    context.Provider = createProvider<T>(context.Provider) as (typeof context)['Provider']\n\n    return context;\n}\n","/*\n * This code is based on an implementation provided by Luke Edwards\n * [https://github.com/lukeed/dequal]\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n * release v2.0.3\n */\n\n\nconst has = Object.prototype.hasOwnProperty;\n\nexport function dequalLite(foo, bar) {\n\tlet ctor, len;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequalLite(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequalLite(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}","import { useContext, useEffect, useRef, useState } from \"react\";\nimport { dequalLite } from \"../dequalLite\";\n\nimport { ValueContext } from \"./types\";\n\nexport default function useContextSelector<Value, Selected>(\n  context: React.Context<Value>, \n  selector: (value: Value) => Selected, \n  deepComparison = false\n): Selected {\n  const { value, registerListener } = useContext(context) as ValueContext<Value, Selected>;\n  const selectorRef = useRef(selector);\n  const [selectedValue, setSelectedValue] = useState(() =>\n    selector(value.current)\n  );\n\n  const _selectedValue = useRef(selectedValue)\n  _selectedValue.current = selectedValue\n\n  useEffect(() => {\n    selectorRef.current = selector;\n  });\n\n  useEffect(() => {\n    \n    const updateValueIfNeeded = (newValue) => {\n      const newSelectedValue = selectorRef.current(newValue);\n\n      const compare = deepComparison ? dequalLite : Object.is\n      if(!compare(_selectedValue.current, newSelectedValue)){\n        setSelectedValue(() => newSelectedValue);\n      }\n    };\n\n    const unregisterListener = registerListener(updateValueIfNeeded);\n\n    return unregisterListener as () => void;\n  }, [registerListener, value, deepComparison]);\n\n  return selectedValue;\n}\n","\nimport { FormConfig} from '../types/FormConfig';\nimport { createContext, useContextSelector } from \"../utils/use-context-selector\";\n\n// ---------------------------------------------------------------------\ntype FormConfigWithDefinition = FormConfig<{fieldProps: Record<string, any>}, any>\n\nconst context = createContext<FormConfigWithDefinition | null>(null);\n\nexport function NiceformHookProvider({ children, ...props }: FormConfigWithDefinition & { children: any }) {\n    return (\n        <context.Provider value={props}>\n            {children}\n        </context.Provider>\n    )\n}\n\nexport function useNiceformHookContext<Selected>(callback: (parameters: FormConfigWithDefinition) => Selected, deepComparison = false): Selected {\n    return useContextSelector(context, callback as (parameters: FormConfigWithDefinition | null) => Selected, deepComparison)\n}","import { FieldValues } from \"react-hook-form\"\nimport { useNiceformHookContext } from \"../contexts/niceform\"\nimport { CreatePropsDefinition } from \"../types\"\nimport { FormConfig } from \"../types/FormConfig\"\n\nexport function useNiceformContext<Form extends CreatePropsDefinition = CreatePropsDefinition, TFieldValues extends FieldValues = FieldValues>(){\n    return useNiceformHookContext(state => {\n        return state.form as FormConfig<Form, TFieldValues>['form']\n    }) \n}","import { useRef } from \"react\";\nimport { useNiceformHookContext } from \"../contexts/niceform\";\nimport { FormConfig } from \"../types/FormConfig\";\n\nexport function useDataRefByContext<T>(callback: (parameters: FormConfig) => T){\n    const fieldMethodsRef = useRef<T>()\n\n    return useNiceformHookContext(state => {\n        fieldMethodsRef.current = callback(state)\n        return fieldMethodsRef\n    })\n}","import { useEffect } from \"react\";\nimport { FieldValues, UseControllerReturn } from \"react-hook-form\";\nimport { useNiceformHookContext } from \"../contexts/niceform\";\nimport { useDataRefByContext } from \"./useDataRefByContext\";\n\nexport function useComputeInputedValueHandler(controller: UseControllerReturn<FieldValues, string>){\n    \n    const name = controller.field.name\n    const inputRef = useDataRefByContext(state => state.form.getField(name)?.input)\n    const setValue = useNiceformHookContext(state => state.form.methods.setValue);\n    const fieldsInputedCalled = useNiceformHookContext(state => state.form.control.fieldsInputedCalled)\n\n    const isInputedValueRef = fieldsInputedCalled.has(name)\n    const computeInputedValue: (callback: (value: any) => any) => any = (callback) => {\n        const input = inputRef.current\n        \n        if(!input || isInputedValueRef || controller.fieldState.isDirty) return;\n\n        let value = controller.field.value\n        value = input(value)\n        if(value === undefined) return;\n        fieldsInputedCalled.add(name)\n        controller.field.value = value\n        callback(value)\n    }\n\n    computeInputedValue(value => setTimeout(setValue, 100, name, value))\n\n    const value = controller.field.value\n    useEffect(() => {\n        computeInputedValue(value => setValue(name, value))\n    }, [value])\n}","export function debounce<T extends (this: any, ...args) => any>(fn: T, ms) {\n    let timer: any = 0\n    return function (this: any, ...args) {\n        clearTimeout(timer)\n        timer = setTimeout(fn.bind(this, ...args), ms || 0)\n    } as T\n}\n\nexport function dynamicDebounce<T extends (this: any, ...args) => any>() {\n    let timer: any = 0\n    return function (this: any, fn: T, ms: number, ...args) {\n        clearTimeout(timer)\n        timer = setTimeout(fn.bind(this, args), ms || 0)\n    } as T\n}","import { Field } from '../types';\n\nexport function getDependentFieldsBy(name: string, fieldsToSearch: Map<string, Field>) {\n    const allField = [...fieldsToSearch.values()]\n    const fieldSelected = fieldsToSearch.get(name)\n\n    if (!fieldSelected) return []\n\n    const fieldsToClean = allField.reduce<Field[]>((collection, field) => {\n        if (\n            fieldSelected.name && \n            field.dependsOnToClear && \n            [field.dependsOnToClear].flat().includes(fieldSelected.name) && \n            field.name !== fieldSelected.name\n        ) {\n            collection.push(field)\n        }\n        return collection\n    }, [])\n\n    return fieldsToClean\n\n}","export function flattenJson<T extends object = object>(obj: T): Record<string, any> {\n  const flattenedObj = {} as Record<string, any>\n\n  function flatten(innerObj: Record<string, any>, path: string) {\n    for (const key in innerObj) {\n      const newPath = path ? `${path}.${key}` : key;\n\n      if (innerObj[key]?.constructor === ({}).constructor || Array.isArray(innerObj[key])) {\n        flatten(innerObj[key], newPath);\n      } else {\n        flattenedObj[newPath] = innerObj[key];\n      }\n    }\n  }\n\n  flatten(obj, \"\");\n\n  return flattenedObj;\n}","export function unflattenJson<T extends Record<string, any> = Record<string, any>>(obj: T): Record<string, any> {\n    const unflattenedObj: Record<string, any> = {};\n\n    for (const key in obj) {\n        const keys = key.split(\".\");\n        let innerObj = unflattenedObj;\n\n        for (let i = 0; i < keys.length - 1; i++) {\n            const currentKey = keys[i];\n\n            if (!innerObj[currentKey]) {\n                innerObj[currentKey] = !isNaN(Number(keys[i + 1])) ? [] : {};\n            }\n            innerObj = innerObj[currentKey];\n        }\n\n        innerObj[keys.at(-1) as string] = obj[key];\n    }\n\n    return unflattenedObj;\n}","\nimport { Field } from \"../types\";\nimport {flattenJson} from \"./flattenJson\";\nimport {unflattenJson} from \"./unflattenJson\";\n\ninterface GetOutputtedValues{\n    fields: Map<string, Field>\n    values: Record<string, any>\n}\nexport function getOutputtedValues({fields, values}: GetOutputtedValues){\n    const valuesFlatterned = flattenJson(values)\n\n    const result = [...fields.values()].reduce((obj, field) => {\n        if(!field.name || !field.output || field.active === false) return obj;\n\n        const value = valuesFlatterned[field.name]\n        obj[field.name] = field.output(value)\n\n        return obj\n    }, {} as Record<string, any>)\n    \n    return unflattenJson({...valuesFlatterned, ...result})\n}","import { Field } from \"../types\"\n\nexport const isFieldActive = (arg: Field | Field['active']) => {\n    if(typeof arg === 'object'){\n        return arg.active !== false\n    }\n\n    return arg !== false\n}","import { RenderFieldPayload, RenderFieldPayloadAsFunction } from \"../types\"\n\nexport function normalizeFieldPayload(\n    field: RenderFieldPayload<Record<string, any>> | RenderFieldPayloadAsFunction<Record<string, any>, any>, \n    deps: Parameters<RenderFieldPayloadAsFunction<Record<string, any>, any>>[0]\n) {\n    if (typeof field !== 'function') return field\n    return field(deps)\n}","const isDateObject = (value: unknown): value is Date => value instanceof Date;\n\nconst isNullOrUndefined = (value: unknown): value is null | undefined => value == null;\n\nconst isObjectType = (value: unknown): value is object =>\n  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);","import {isObject} from './isObject';\n\nconst isCheckBoxInput = (element: HTMLInputElement): element is HTMLInputElement => element.type === 'checkbox';\ntype Event = { target: any };\n\nexport const getEventValue = (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;","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { FieldValues, UseControllerReturn } from \"react-hook-form\";\nimport { debounce } from \"../utils\";\nimport { getEventValue } from \"../utils/getEventValue\";\nimport { useNiceformHookContext } from \"../contexts/niceform\";\n\nexport function useDebounceChangeFieldHandler(controller: UseControllerReturn<FieldValues, string>, time = 400, enabled = true){\n    const [value, setValue] = useState<any>(controller.field.value)\n    const fieldOnchange = useRef(controller.field.onChange)\n    const canExternalUpdate = useRef(true)\n\n    const debounceSubmitDefinitions = useNiceformHookContext(state => state.form.control.debounceSubmitDefinitions)\n\n    const onChangeDebounce = useMemo(() => debounce((...args) => {\n        canExternalUpdate.current = true\n        fieldOnchange.current(...args)\n    }, time), [time])\n\n    const newOnChange = useCallback((evt) => {\n        canExternalUpdate.current = false\n        const value = getEventValue(evt)\n        setValue(value)\n        onChangeDebounce(value)\n        debounceSubmitDefinitions.set(time)\n    }, [setValue, onChangeDebounce, time])\n\n    const controlledValue = controller.field.value\n    useEffect(() => {\n        if(canExternalUpdate.current && !Object.is(value, controlledValue)){\n            setValue(controlledValue)\n            controller.field.value = controlledValue\n        }\n    }, [controlledValue])\n    \n    if(!enabled) return;\n\n    controller.field.onChange = newOnChange\n    controller.field.value = value\n}","import type { FieldValues, UseFormReturn } from 'react-hook-form'\n\nimport {useNiceformHookContext} from '../../contexts/niceform'\nexport default function useForm<TFieldValues extends FieldValues = FieldValues>() {\n    \n    return useNiceformHookContext(state => state.form.methods as UseFormReturn<TFieldValues>)\n}","import { FieldValues, Path, UseControllerProps, useController as _useController } from 'react-hook-form'\n\nimport useForm from './useForm'\n\nexport default function useController<TFieldValues extends FieldValues = FieldValues>(props: UseControllerProps<TFieldValues, Path<TFieldValues>>) {\n\n    const {control} = useForm<TFieldValues>()\n    return _useController<TFieldValues>({control, ...props})\n}","import React, { useState } from \"react\";\nimport type { FieldValues, UseControllerReturn } from \"react-hook-form\";\n\nimport { useNiceformHookContext } from \"../contexts/niceform\";\nimport * as utils from '../utils'\n\nexport default function useInactiveFieldHandler(controller: UseControllerReturn<FieldValues, string>){\n\n    const isFieldActive = useNiceformHookContext(state => {\n        const field = state.form.getField(controller.field.name)\n        return utils.isFieldActive(field?.active)\n    })\n\n    const [value, setValue] = useState<any>()\n\n    if(!isFieldActive){\n        controller.field = {\n            ...controller.field,\n            onBlur: () => null,\n            onChange: (evt: React.ChangeEvent<HTMLInputElement>) => setValue(evt.target.value),\n            value,\n            ref: () => null\n        }\n    }\n}","import { FieldValues, Validate } from \"react-hook-form\";\n\nimport { useNiceformHookContext } from \"./contexts/niceform\";\nimport { useComputeInputedValueHandler } from \"./hooks/useComputeInputedValueHandler\";\nimport { useDataRefByContext } from \"./hooks/useDataRefByContext\";\nimport { useDebounceChangeFieldHandler } from \"./hooks/useDebounceChangeFieldHandler\";\nimport useController from \"./hooks/useForm/useController\";\nimport useInactiveFieldHandler from \"./hooks/useInactiveFieldHandler\";\nimport { FieldConfig } from \"./types\";\n\nconst obj = {}\nexport function useField(name: string, config?: FieldConfig) {\n    if(!config) config = obj\n    const methods = useNiceformHookContext(state => state.form.methods)\n    const errorsControl = useNiceformHookContext(state => state.form.control.errorsControl)\n    const fieldsRegistered = useNiceformHookContext(state => state.form.control.fieldsRegistered)\n\n    const validationByErrorsControl = (errorsControl || []).reduce((obj, error, i) => {\n        const field = fieldsRegistered.get(name)\n        if(!field) return obj;\n\n        obj['errors-control-' + i] = (value, formValues) => error({\n            value,\n            formValues,\n            fieldsRegistered,\n            methods,\n            field\n        })\n        return obj\n    }, {} as Validate<any, FieldValues>)\n\n    const volatileFieldRef = useDataRefByContext(state => {\n        const field = state.form.getField(name)\n        if (!field) return {}\n\n        return {\n            input: field.input ?? config.input,\n            onBlur: field.onBlur ?? config.onBlur,\n            onChange: field.onChange ?? config.onChange,\n            validate: field.validate ?? config.validate\n        }\n    })\n    const { rules, others } = useNiceformHookContext(state => {\n        const field = state.form.getField(name)\n        if (!field) return { rules: {}, others: {} }\n\n        const debounceTime = (\n            field.debounceTime ?? \n            config.debounceTime ?? \n            state.form.control.parameters?.debounceTime ?? \n            state.form.control.config.debounceTime ?? \n            400\n        )\n        const enableDebounce = (\n            field.enableDebounce ?? \n            config.enableDebounce ?? \n            state.form.control.parameters?.enableDebounce ?? \n            state.form.control.config.enableDebounce ?? \n            false\n        ) && debounceTime > 0\n\n        return {\n            rules: {\n                min: field.min ?? config.min,\n                max: field.max ?? config.max,\n                deps: field.deps,\n                maxLength: field.maxLength ?? config.maxLength,\n                minLength: field.minLength ?? config.minLength,\n                pattern: field.pattern ?? config.pattern,\n                required: field.required ?? config.required,\n                value: field.value ?? config.value,\n            },\n            others: {\n                shouldUnregister: field.shouldUnregister ?? config.shouldUnregister,\n                isActive: (field.active ?? config.active) !== false,\n                disabled: field.disabled ?? config.disabled,\n                debounceTime,\n                enableDebounce\n            }\n        }\n    }, true)\n\n    const controller = useController({\n        name,\n        shouldUnregister: others.shouldUnregister,\n        rules: others.isActive ? {\n            onBlur: (...args) => volatileFieldRef.current?.onBlur?.(...args),\n            onChange: (...args) => volatileFieldRef.current?.onChange?.(...args),\n            shouldUnregister: others.shouldUnregister,\n            deps: rules.deps,\n            max: rules.max,\n            min: rules.min,\n            maxLength: rules.maxLength,\n            minLength: rules.minLength,\n            pattern: rules.pattern,\n            required: rules.required,\n            validate: {\n                ...validationByErrorsControl,\n                ...volatileFieldRef.current?.validate\n            },\n            value: rules.value,\n        } : {},\n        disabled: others.disabled\n    })\n\n    useComputeInputedValueHandler(controller)\n    useDebounceChangeFieldHandler(controller, others.debounceTime, others.enableDebounce)\n    useInactiveFieldHandler(controller)\n\n    return controller\n}","\nimport { memo } from \"react\";\nimport type { UseControllerReturn } from 'react-hook-form';\nimport { useField } from \"../useField\";\n\ninterface RenderReactElementProps {\n    name: string\n    render(hook: UseControllerReturn): React.ReactElement;\n}\n\nexport const RenderReactElement = memo<RenderReactElementProps>(function RenderReactElement(props) {\n    const hook = useField(props.name)\n    return props.render(hook)\n})\n\nexport const renderReactElement = (props: RenderReactElementProps) => <RenderReactElement {...props}/>","import { useRef } from \"react\";\n\nexport default function useDataRef<T>(data: T){\n    const ref = useRef(data)\n    ref.current = data\n\n    return ref\n}","import { useEffect, useRef } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { Field } from \"../types\";\nimport { OnChangeField } from \"../types/auxiliar\";\n\nimport useDataRef from \"./useDataRef\";\n\nexport interface UseChangeField<T extends Record<string, any> = Record<string, any>> {\n    methods: UseFormReturn<any>\n    fields: Map<string, Field>\n    onChangeField?: OnChangeField<T>\n}\nexport function useChangeField<T extends Record<string, any> = Record<string, any>>(props: UseChangeField<T>){\n   \n    const oldsValuesByName = useRef<Map<string, any> | null>(null)\n    const onChangeFieldRef = useDataRef(props.onChangeField)\n\n    const watch = props.methods.watch\n    const methods = props.methods\n\n    if(!oldsValuesByName.current){\n        oldsValuesByName.current = new Map()\n    }\n\n    useEffect(() => {\n        const subscription = watch((values, { name, type }) => {\n            if (name === undefined || !onChangeFieldRef.current) return;\n            const field = props.fields.get(name)\n            if(!field) return;\n\n            const value = methods.getValues(name)\n\n            if(Object.is(oldsValuesByName.current!.get(name), value)) return;\n\n            oldsValuesByName.current!.set(name, value)\n            onChangeFieldRef.current(field, value)\n        });\n\n        return () => subscription.unsubscribe();\n\n    }, [watch, onChangeFieldRef, methods]);\n}","import { useEffect } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\nimport { Field } from \"../types\";\nimport { getDependentFieldsBy } from \"../utils/getDependentFieldsBy\";\nimport useDataRef from \"./useDataRef\";\n\nexport interface UseDependentFieldsToClear {\n    methods: UseFormReturn<any>\n    fields: Map<string, Field>\n    optionsWhenCleaning?: Partial<{\n        shouldValidate: boolean;\n        shouldDirty: boolean;\n        shouldTouch: boolean;\n        shouldCleanChain: boolean\n    }>\n}\nexport default function useDependentFieldsToClear(input: UseDependentFieldsToClear) {\n    const {\n        methods,\n        optionsWhenCleaning\n    } = input\n\n    const dataRef = useDataRef({\n        methods,\n        optionsWhenCleaning\n    })\n\n    const watch = methods.watch\n\n    useEffect(() => {\n        const subscription = watch((values, { name, type }) => {\n            if (name === undefined) return;\n\n            const methods = dataRef.current.methods\n            const optionsWhenCleaning = dataRef.current.optionsWhenCleaning\n            const fields = input.fields\n            const currentValue = methods.getValues(name)\n            const shouldCleanChain = optionsWhenCleaning?.shouldCleanChain\n\n            if (currentValue === undefined && !shouldCleanChain) return;\n\n            const fieldsDependents = getDependentFieldsBy(name, fields || [])\n\n            fieldsDependents.forEach(field => {\n\n                const currentFieldValue = methods.getValues(field.name as string)\n\n                if (!field.name || currentFieldValue === undefined) return;\n\n                methods.setValue(field.name, null, optionsWhenCleaning)\n            })\n\n        });\n\n        return () => subscription.unsubscribe();\n\n    }, [watch, dataRef]);\n}","import { UseFormReturn } from \"react-hook-form\";\nimport {flattenJson} from \"../utils/flattenJson\";\n\ninterface UseInitialValues{\n    methods: UseFormReturn<any> \n    initialValues: Record<string, any>\n}\nexport function useInitialValues(props: UseInitialValues){\n    const flatternInitialValues = flattenJson(props.initialValues)\n\n    for(const fieldName in flatternInitialValues){\n        const value = flatternInitialValues[fieldName]\n        if(value === undefined) continue;\n\n        if(props.methods.getValues(fieldName) !== undefined) continue\n        props.methods.register(fieldName)\n        props.methods.setValue(fieldName, value)\n    }\n}","/*\n * This code is based on an implementation provided by Federico Brigante\n * [https://github.com/fregante/many-keys-map]\n * Copyright (c) Federico Brigante <me@fregante.com> (https://fregante.com)\n * release v2.0.1\n */\n\nconst nullKey = Symbol('null'); // `objectHashes` key for null\n\nlet keyCounter = 0;\n\nexport class ManyKeysMap<K, V> extends Map<K[], V> {\n    \n    private _objectHashes: WeakMap<any, any>\n    private _symbolHashes: Map<any, any>\n    private _publicKeys: Map<any, any>\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._objectHashes = new WeakMap();\n\t\tthis._symbolHashes = new Map(); // https://github.com/tc39/ecma262/issues/1194\n\t\tthis._publicKeys = new Map();\n\n\t\tconst [pairs] = arguments; // Map compat\n\t\tif (pairs === null || pairs === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof pairs[Symbol.iterator] !== 'function') {\n\t\t\tthrow new TypeError(typeof pairs + ' is not iterable (cannot read property Symbol(Symbol.iterator))');\n\t\t}\n\n\t\tfor (const [keys, value] of pairs) {\n\t\t\tthis.set(keys, value);\n\t\t}\n\t}\n\n\t_getPublicKeys(keys, create = false) {\n\t\tif (!Array.isArray(keys)) {\n\t\t\tthrow new TypeError('The keys parameter must be an array');\n\t\t}\n\n\t\tconst privateKey = this._getPrivateKey(keys, create);\n\n\t\tlet publicKey;\n\t\tif (privateKey && this._publicKeys.has(privateKey)) {\n\t\t\tpublicKey = this._publicKeys.get(privateKey);\n\t\t} else if (create) {\n\t\t\tpublicKey = [...keys]; // Regenerate keys array to avoid external interaction\n\t\t\tthis._publicKeys.set(privateKey, publicKey);\n\t\t}\n\n\t\treturn {privateKey, publicKey};\n\t}\n\n\t_getPrivateKey(keys, create = false) {\n\t\tconst privateKeys: any[] = [];\n\t\tfor (let key of keys) {\n\t\t\tif (key === null) {\n\t\t\t\tkey = nullKey;\n\t\t\t}\n\n\t\t\tconst hashes = typeof key === 'object' || typeof key === 'function' ? '_objectHashes' : (typeof key === 'symbol' ? '_symbolHashes' : false);\n\n\t\t\tif (!hashes) {\n\t\t\t\tprivateKeys.push(key);\n\t\t\t} else if (this[hashes].has(key)) {\n\t\t\t\tprivateKeys.push(this[hashes].get(key));\n\t\t\t} else if (create) {\n\t\t\t\tconst privateKey = `@@mkm-ref-${keyCounter++}@@`;\n\t\t\t\tthis[hashes].set(key, privateKey);\n\t\t\t\tprivateKeys.push(privateKey);\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn JSON.stringify(privateKeys);\n\t}\n\n\tset(keys: K[], value: V) {\n\t\tconst {publicKey} = this._getPublicKeys(keys, true);\n\t\treturn super.set(publicKey, value);\n\t}\n\n\tget(keys: K[]): V | undefined {\n\t\tconst {publicKey} = this._getPublicKeys(keys);\n\t\treturn super.get(publicKey);\n\t}\n\n\thas(keys: K[]) {\n\t\tconst {publicKey} = this._getPublicKeys(keys);\n\t\treturn super.has(publicKey);\n\t}\n\n\tdelete(keys: K[]) {\n\t\tconst {publicKey, privateKey} = this._getPublicKeys(keys);\n\t\treturn Boolean(publicKey && super.delete(publicKey) && this._publicKeys.delete(privateKey));\n\t}\n\n\tclear() {\n\t\tsuper.clear();\n\t\tthis._symbolHashes.clear();\n\t\tthis._publicKeys.clear();\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'ManyKeysMap';\n\t}\n\n\tget size() {\n        // @ts-ignore\n\t\treturn super.size;\n\t}\n}","import { useCallback, useRef } from \"react\";\nimport { ManyKeysMap } from \"../utils/ManyKeysMap\";\n\nexport function useMemoize(){\n    const cache = useRef(new ManyKeysMap<any, any>())\n\n    const memoize = useCallback(function memoize<T>(callback: (() => T) | T, dependencies: [key: any, ...deps: any[]]): T {\n        let currentValue = cache.current.get(dependencies)\n        if(!currentValue){\n            if (typeof callback === 'function') {\n                cache.current.set(dependencies, (callback as () => T)());\n            } else {\n                cache.current.set(dependencies, callback);\n            }\n            currentValue = cache.current.get(dependencies)\n        }\n        return currentValue\n    }, [])\n    \n    return memoize\n}","import { useCallback, useRef } from \"react\";\nimport { ManyKeysMap } from \"../utils/ManyKeysMap\";\n\nexport function useMemoizeCallback(){\n    const cache = useRef(new ManyKeysMap<any, any>())\n\n    const memoizeCallback = useCallback(function memoizeCallback<T extends () => any>(callback: T, dependencies: [key: any, ...deps: any[]]): T {\n        let currentValue = cache.current.get(dependencies)\n        if(!currentValue){\n            cache.current.set(dependencies, callback);\n            currentValue = cache.current.get(dependencies)\n        }\n        return currentValue\n    }, [])\n    \n    return memoizeCallback\n}","import type { FieldErrors, FieldValues, UseFormReturn } from \"react-hook-form\"\nimport type { Field } from \"../types\"\nimport { useEffect } from \"react\"\n\ninterface UseOnErrorDuringSubmitArgs<FieldProps extends Record<string, any> = Record<string, any>>{\n    methods: UseFormReturn<any> \n    getField(name: string): Field | undefined\n    onErrorDuringSubmit?(errors: FieldErrors, context: {\n        methods: UseFormReturn<any>\n        getField(name: string): Field<FieldProps, FieldValues> | undefined\n    })\n}\nexport function useOnErrorDuringSubmit({getField, methods, onErrorDuringSubmit}: UseOnErrorDuringSubmitArgs){\n    useEffect(() => {\n        const errors = methods.formState.errors\n        if(Object.keys(errors).length && methods.formState.submitCount) onErrorDuringSubmit?.(methods.formState.errors, {\n            methods,\n            getField\n        })\n    }, [methods.formState.submitCount])\n}","import { useCallback, useMemo, useRef } from \"react\";\nimport { FieldValues, useForm as useFormReactHookForm } from \"react-hook-form\";\nimport { renderReactElement } from \"./components/RenderReactElement\";\nimport { useChangeField } from \"./hooks/useChangeField\";\n\nimport useDependentFieldsToClear from \"./hooks/useDependentFieldsToClear\";\nimport { useInitialValues } from \"./hooks/useInitialValues\";\nimport { useMemoize } from \"./hooks/useMemoize\";\nimport { useMemoizeCallback } from \"./hooks/useMemoizeCallback\";\nimport { useOnErrorDuringSubmit } from \"./hooks/useOnErrorDuringSubmit\";\nimport type { ComponentDefinition, CreateConfig, CreatePropsDefinition, Field, RenderField, RenderFields, UseFormParameters } from \"./types\";\nimport { getOutputtedValues, normalizeFieldPayload } from \"./utils\";\nimport { dynamicDebounce } from \"./utils/debounce\";\n\nexport function create<T extends CreatePropsDefinition>(config: CreateConfig<T>){\n\n    const components = new Map<string, ComponentDefinition>()\n    \n    for(const key in config.components){\n        components.set(key, config.components[key])\n    }\n\n    return function useForm<TFieldValues extends FieldValues = FieldValues>(parameters?: UseFormParameters<T, TFieldValues>){\n       \n        const repository = useRef({\n            fieldsRegistered: new Map<string, Field<T['fieldProps'], TFieldValues>>(),\n            componentsDefinitions: new Map<string, ComponentDefinition>(components),\n            errorsControl: config.errorsControl,\n            debounceSubmitDefinitions: {\n                debounceRegistry: {registeredAt: 0, time: 0},\n                set(time: number){\n                    this.debounceRegistry.registeredAt = Date.now()\n                    this.debounceRegistry.time = time\n                },\n                getRemainingTime(){\n                    const timeDiff = Date.now() - this.debounceRegistry.registeredAt\n\n                    return Math.max(0, this.debounceRegistry.time - timeDiff + 50)\n                },\n                isActiveDebounce(){\n                    const timeDiff = Date.now() - this.debounceRegistry.registeredAt\n                    \n                    return timeDiff < this.debounceRegistry.time\n                }\n            },\n            fieldsInputedCalled: new Set<string>()\n        })\n        \n        const submitDynamicDebounce = useMemo(() => dynamicDebounce(), [])\n        \n        const memoize = useMemoize()\n        const memoizeCallback = useMemoizeCallback()\n        const methods = useFormReactHookForm<TFieldValues>(parameters)\n\n        const getField = useCallback((name: string) => {\n            return repository.current.fieldsRegistered.get(name)\n        }, [])\n\n        useOnErrorDuringSubmit({\n            getField,\n            methods,\n            onErrorDuringSubmit: config.onErrorDuringSubmit\n        })\n\n        useInitialValues({\n            methods, \n            initialValues: parameters?.initialValues || {}\n        })\n        useDependentFieldsToClear({\n            methods, \n            get fields(){\n                return repository.current.fieldsRegistered\n            }, \n        })\n        useChangeField({\n            methods, \n            get fields(){\n                return repository.current.fieldsRegistered\n            },\n            onChangeField: parameters?.onChangeField\n        })\n    \n        const renderField = useCallback<RenderField<T['fieldProps'], TFieldValues>>(field => {\n            const {render, ..._field} = normalizeFieldPayload(field, {\n                getField,\n                methods\n            })\n    \n            const type = _field.type\n            const name = _field.name\n            if(!name) return null\n            \n            repository.current.fieldsRegistered.set(name, _field)\n    \n            if(type === 'node' && render){\n                return renderReactElement({name, render})\n            }\n\n            const component = repository.current.componentsDefinitions.get(type)\n           \n            const fieldComponent = component?.render(_field)\n    \n            return fieldComponent\n    \n        }, [\n            methods, \n            getField\n        ])\n\n        const renderFields = useCallback<RenderFields<T['fieldProps'], TFieldValues>>(fields => {\n            return fields.filter(Boolean).map(renderField)\n        }, [renderField])\n        \n        if(!methods.handleSubmit.prototype){ \n            \n            const handleSubmit = methods.handleSubmit\n            methods.handleSubmit = function(onValid, onInvalid){\n                \n                const resolver = handleSubmit(async (values, event) => {\n\n                    const valuesOutputted = getOutputtedValues({ \n                        fields: repository.current.fieldsRegistered, \n                        values: values \n                    })\n                    onValid(valuesOutputted as TFieldValues, event)\n                }, onInvalid)\n\n                return async function(evt){\n\n                    const enableDebounce = (\n                        parameters?.enableDebounceOnSubmit ?? \n                        config.enableDebounceOnSubmit\n                    ) && repository.current.debounceSubmitDefinitions.isActiveDebounce()\n                    \n                    if(!enableDebounce) return resolver(evt);\n\n                    const timeDebounce = repository.current.debounceSubmitDefinitions.getRemainingTime()\n                    \n                    evt?.preventDefault()\n                    \n                    submitDynamicDebounce(() => {\n                        resolver(evt)\n                    }, timeDebounce)\n                }\n            }\n        }\n        \n        // --------------------------------------------------------------------------------------------\n\n        const result = useRef({\n            methods,\n            renderField,\n            renderFields,\n            getField,\n            memoize,\n            memoizeCallback,\n            control: {\n                get errorsControl(){\n                    return repository.current.errorsControl\n                },\n                get fieldsRegistered(){\n                    return repository.current.fieldsRegistered\n                },\n                get fieldsInputedCalled(){\n                    return repository.current.fieldsInputedCalled\n                },\n                get debounceSubmitDefinitions(){\n                    return repository.current.debounceSubmitDefinitions\n                },\n                get parameters(){\n                    return parameters\n                },\n                get config(){\n                    return config\n                }\n            }\n        })\n\n        result.current.renderField = renderField\n        result.current.renderFields = renderFields\n\n        return result.current\n    }\n}\n\nexport type Create = typeof create\nexport type UseForm = ReturnType<Create>\nexport type UseReturn = ReturnType<UseForm>"],"names":["_jsx","createContextOriginal","_useController","isFieldActive","utils.isFieldActive","useFormReactHookForm"],"mappings":"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"}