{"version":3,"file":"useFormResponse.mjs","sources":[""],"sourcesContent":["import type { RefObject } from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport { useListeners } from \"./useListeners\";\r\nimport { constants } from \"../../constants\";\r\n\r\n/**\n * Получает результат отправки формы\n * @template T - тип данных ответа, который приходит в `detail.resp` после отправки формы.\n * @returns {{\n *   resp: T\n * }} Возвращает объект с полем `resp`: `null` до события отправки или значение ответа формы после события.\n * @example\n * import { useRef } from \"react\";\n * import { useFormResponse } from \"@delement/ui/utils/react\";\n * import { Form, FormRow, FormCol, Btn, Input } from \"@delement/ui/components\";\n *\r\n * const App = () => {\r\n *\r\n *   const formRef = useRef(null);\r\n *   const { resp } = useFormResponse(formRef); // `null` либо результат запроса\r\n *\r\n *   return <Form ref={formRef}>\r\n *       <FormRow>\r\n *         <FormCol>\r\n *           <Input name={\"test1\"} value={\"value1\"}/>\r\n *         </FormCol>\r\n *       </FormRow>\r\n *       <FormRow>\r\n *         <FormCol>\r\n *           <Btn label={\"Отправить\"} type={\"submit\"}/>\r\n *         </FormCol>\r\n *       </FormRow>\r\n *    </Form>\r\n * }\r\n */\r\nexport const useFormResponse = <T = unknown>(ref: RefObject<unknown>): {\r\n  resp: T | null;\r\n} => {\r\n\r\n  const [ resp, setResp ] = useState<T | null>(null);\r\n\r\n  const onDone = ({ detail }: { detail: {\r\n    resp: T | null;\r\n  }; }) => setResp(detail.resp);\r\n\r\n  useListeners<CustomEvent<{ resp: T | null; }>>({\r\n    listeners: {\r\n      [constants.formBubbles.formSuccess]: onDone,\r\n      [constants.formBubbles.formError]: onDone,\r\n    },\r\n    ref,\r\n  });\r\n\r\n  useEffect(() => {\r\n    return () => {\r\n      setResp(null);\r\n    };\r\n  }, []);\r\n\r\n  return { resp };\r\n};\r\n"],"names":["useFormResponse","ref","resp","setResp","useState","onDone","detail","useListeners","listeners","constants","formBubbles","formSuccess","formError","useEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCO,MAAMA,gBAAgCC,MAI3C,MAAQC,KAAMC,SAAYC,SAAmB,MAE7C,MAAMC,OAAS,EAAGC,iBAETH,QAAQG,OAAOJ,MAExBK,aAA+C,CAC7CC,UAAW,CACT,CAACC,UAAUC,YAAYC,aAAcN,OACrC,CAACI,UAAUC,YAAYE,WAAYP,QAErCJ,UAGFY,UAAU,IACD,KACLV,QAAQ,OAET,IAEH,MAAO,CAAED"}