{"version":3,"file":"use-form-errors.mjs","names":[],"sources":["../../../src/hooks/use-form-errors/use-form-errors.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { ClearErrors, ClearFieldError, FormErrors, SetErrors, SetFieldError } from '../../types';\nimport { filterErrors } from './filter-errors/filter-errors';\n\nexport interface $FormErrors<Values extends Record<string, any>> {\n  errorsState: FormErrors;\n  setErrors: SetErrors;\n  clearErrors: ClearErrors;\n  setFieldError: SetFieldError<Values>;\n  clearFieldError: ClearFieldError;\n}\n\nexport function useFormErrors<Values extends Record<string, any>>(\n  initialErrors: FormErrors\n): $FormErrors<Values> {\n  const [errorsState, setErrorsState] = useState(filterErrors(initialErrors));\n  const errorsRef = useRef(errorsState);\n\n  const setErrors: SetErrors = useCallback((errors) => {\n    setErrorsState((current) => {\n      const newErrors = filterErrors(typeof errors === 'function' ? errors(current) : errors);\n      errorsRef.current = newErrors;\n      return newErrors;\n    });\n  }, []);\n\n  const clearErrors: ClearErrors = useCallback(() => setErrors({}), []);\n\n  const clearFieldError: ClearFieldError = useCallback(\n    (path) => {\n      if (errorsRef.current[path as string] === undefined) {\n        return;\n      }\n\n      setErrors((current) => {\n        const errors = { ...current };\n        delete errors[path as string];\n        return errors;\n      });\n    },\n    [errorsState]\n  );\n\n  const setFieldError: SetFieldError<Values> = useCallback(\n    (path, error) => {\n      if (error == null || error === false) {\n        clearFieldError(path);\n      } else if (errorsRef.current[path as string] !== error) {\n        setErrors((current) => ({ ...current, [path]: error }));\n      }\n    },\n    [errorsState]\n  );\n\n  return {\n    errorsState,\n    setErrors,\n    clearErrors,\n    setFieldError,\n    clearFieldError,\n  };\n}\n"],"mappings":";;;;AAYA,SAAgB,cACd,eACqB;CACrB,MAAM,CAAC,aAAa,kBAAkB,SAAS,aAAa,aAAa,CAAC;CAC1E,MAAM,YAAY,OAAO,WAAW;CAEpC,MAAM,YAAuB,aAAa,WAAW;EACnD,gBAAgB,YAAY;GAC1B,MAAM,YAAY,aAAa,OAAO,WAAW,aAAa,OAAO,OAAO,IAAI,MAAM;GACtF,UAAU,UAAU;GACpB,OAAO;EACT,CAAC;CACH,GAAG,CAAC,CAAC;CAEL,MAAM,cAA2B,kBAAkB,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;CAEpE,MAAM,kBAAmC,aACtC,SAAS;EACR,IAAI,UAAU,QAAQ,UAAoB,KAAA,GACxC;EAGF,WAAW,YAAY;GACrB,MAAM,SAAS,EAAE,GAAG,QAAQ;GAC5B,OAAO,OAAO;GACd,OAAO;EACT,CAAC;CACH,GACA,CAAC,WAAW,CACd;CAaA,OAAO;EACL;EACA;EACA;EACA,eAf2C,aAC1C,MAAM,UAAU;GACf,IAAI,SAAS,QAAQ,UAAU,OAC7B,gBAAgB,IAAI;QACf,IAAI,UAAU,QAAQ,UAAoB,OAC/C,WAAW,aAAa;IAAE,GAAG;KAAU,OAAO;GAAM,EAAE;EAE1D,GACA,CAAC,WAAW,CAOA;EACZ;CACF;AACF"}