{"version":3,"file":"use-form-validating.cjs","names":[],"sources":["../../../src/hooks/use-form-validating/use-form-validating.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nexport interface $FormValidating {\n  validating: boolean;\n  isValidating: (path?: string) => boolean;\n  setFieldValidating: (path: string, validating: boolean) => void;\n  setFormValidating: (validating: boolean) => void;\n  getAbortSignal: (path: string) => AbortSignal;\n  clearValidating: () => void;\n}\n\nexport function useFormValidating(): $FormValidating {\n  const [validatingFields, setValidatingFields] = useState<Record<string, boolean>>({});\n  const [formValidating, setFormValidatingState] = useState(false);\n  const validatingRef = useRef<Record<string, boolean>>({});\n  const formValidatingRef = useRef(false);\n  const abortControllers = useRef<Record<string, AbortController>>({});\n\n  const setFieldValidating = useCallback((path: string, value: boolean) => {\n    validatingRef.current = { ...validatingRef.current, [path]: value };\n    setValidatingFields({ ...validatingRef.current });\n  }, []);\n\n  const setFormValidating = useCallback((value: boolean) => {\n    formValidatingRef.current = value;\n    setFormValidatingState(value);\n  }, []);\n\n  const isValidating = useCallback((path?: string) => {\n    if (path) {\n      return !!validatingRef.current[path];\n    }\n    if (formValidatingRef.current) {\n      return true;\n    }\n    return Object.values(validatingRef.current).some(Boolean);\n  }, []);\n\n  const getAbortSignal = useCallback((path: string) => {\n    abortControllers.current[path]?.abort();\n    abortControllers.current[path] = new AbortController();\n    return abortControllers.current[path].signal;\n  }, []);\n\n  const clearValidating = useCallback(() => {\n    validatingRef.current = {};\n    setValidatingFields({});\n    formValidatingRef.current = false;\n    setFormValidatingState(false);\n    Object.values(abortControllers.current).forEach((c) => c.abort());\n    abortControllers.current = {};\n  }, []);\n\n  const validating = formValidating || Object.values(validatingFields).some(Boolean);\n\n  return {\n    validating,\n    isValidating,\n    setFieldValidating,\n    setFormValidating,\n    getAbortSignal,\n    clearValidating,\n  };\n}\n"],"mappings":";;;;AAWA,SAAgB,oBAAqC;CACnD,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAAyD,CAAC,CAAC;CACpF,MAAM,CAAC,gBAAgB,2BAAA,GAAA,MAAA,UAAmC,KAAK;CAC/D,MAAM,iBAAA,GAAA,MAAA,QAAgD,CAAC,CAAC;CACxD,MAAM,qBAAA,GAAA,MAAA,QAA2B,KAAK;CACtC,MAAM,oBAAA,GAAA,MAAA,QAA2D,CAAC,CAAC;CAEnE,MAAM,sBAAA,GAAA,MAAA,cAAkC,MAAc,UAAmB;EACvE,cAAc,UAAU;GAAE,GAAG,cAAc;IAAU,OAAO;EAAM;EAClE,oBAAoB,EAAE,GAAG,cAAc,QAAQ,CAAC;CAClD,GAAG,CAAC,CAAC;CAEL,MAAM,qBAAA,GAAA,MAAA,cAAiC,UAAmB;EACxD,kBAAkB,UAAU;EAC5B,uBAAuB,KAAK;CAC9B,GAAG,CAAC,CAAC;CAEL,MAAM,gBAAA,GAAA,MAAA,cAA4B,SAAkB;EAClD,IAAI,MACF,OAAO,CAAC,CAAC,cAAc,QAAQ;EAEjC,IAAI,kBAAkB,SACpB,OAAO;EAET,OAAO,OAAO,OAAO,cAAc,OAAO,EAAE,KAAK,OAAO;CAC1D,GAAG,CAAC,CAAC;CAEL,MAAM,kBAAA,GAAA,MAAA,cAA8B,SAAiB;EACnD,iBAAiB,QAAQ,OAAO,MAAM;EACtC,iBAAiB,QAAQ,QAAQ,IAAI,gBAAgB;EACrD,OAAO,iBAAiB,QAAQ,MAAM;CACxC,GAAG,CAAC,CAAC;CAEL,MAAM,mBAAA,GAAA,MAAA,mBAAoC;EACxC,cAAc,UAAU,CAAC;EACzB,oBAAoB,CAAC,CAAC;EACtB,kBAAkB,UAAU;EAC5B,uBAAuB,KAAK;EAC5B,OAAO,OAAO,iBAAiB,OAAO,EAAE,SAAS,MAAM,EAAE,MAAM,CAAC;EAChE,iBAAiB,UAAU,CAAC;CAC9B,GAAG,CAAC,CAAC;CAIL,OAAO;EACL,YAHiB,kBAAkB,OAAO,OAAO,gBAAgB,EAAE,KAAK,OAAO;EAI/E;EACA;EACA;EACA;EACA;CACF;AACF"}