{"version":3,"file":"Form.mjs","names":["React","forwardRef","useImperativeHandle","useRef","useEffect","AnyObject","Form","FinalForm","FormProps","FinalFormProps","FormRenderProps","createDecorator","formRegistry","FormValues","children","props","ReactNode","id","scrollToError","FormBodyProps","params","formRef","RefObject","HTMLFormElement","render","outerRef","Ref","FormBody","t0","$","_c","t1","t2","t3","handleSubmit","FormInner","ref","renderProp","current","register","unregister","Symbol","for","t4","t5","FC"],"sources":["../../../src/utilities/form/Form.tsx"],"sourcesContent":["import React, {\n  forwardRef,\n  useImperativeHandle,\n  useRef,\n  useEffect\n} from 'react';\nimport {\n  AnyObject,\n  Form as FinalForm,\n  FormProps as FinalFormProps,\n  FormRenderProps\n} from 'react-final-form';\nimport createDecorator from './final-form-scroll/createDecorator';\nimport { formRegistry } from '@univerus/udp-react-stencil-component-library';\n\nexport interface FormProps<FormValues = AnyObject>\n  extends FinalFormProps<FormValues> {\n  children?: ((props: FormRenderProps<FormValues>) => React.ReactNode) | React.ReactNode;\n  id?: string;\n}\nconst scrollToError = createDecorator();\n\n/**\n * final-form Form wrapper with automatic <form> and submit handler.\n * Automatically registers with the form registry when an id is provided,\n * enabling buttons to connect across component boundaries.\n */\n\ninterface FormBodyProps {\n  params: FormRenderProps;\n  formRef: React.RefObject<HTMLFormElement>;\n  id?: string;\n  render: ((props: FormRenderProps) => React.ReactNode) | React.ReactNode;\n  outerRef: React.Ref<unknown>;\n}\n\nconst FormBody = ({ params, formRef, id, render, outerRef }: FormBodyProps) => {\n  useImperativeHandle(outerRef, () => ({ ...params }));\n  return (\n    <form\n      ref={formRef}\n      onSubmit={params.handleSubmit}\n      noValidate={true}\n      id={id}\n    >\n      {typeof render === 'function' ? render(params) : render}\n    </form>\n  );\n};\n\nconst FormInner = (\n  { render: renderProp, children, id, ...props }: FormProps,\n  ref: React.Ref<unknown>\n) => {\n  const render = renderProp || children;\n  const formRef = useRef<HTMLFormElement>(null);\n\n  // Auto-register with form registry when id is provided\n  useEffect(() => {\n    if (id && formRef.current) {\n      formRegistry.register(id, formRef.current);\n      return () => formRegistry.unregister(id);\n    }\n  }, [id]);\n\n  return (\n    <FinalForm ref={ref} decorators={[scrollToError]} {...props}>\n      {(params) => (\n        <FormBody\n          params={params}\n          formRef={formRef}\n          id={id}\n          render={render}\n          outerRef={ref}\n        />\n      )}\n    </FinalForm>\n  );\n};\n\nexport const Form: React.FC<FormProps> = forwardRef(FormInner);\n"],"mappings":";;;;;;AAoBA,MAAMkB,gBAAgBP,iBAAiB;AAgBvC,MAAMgB,YAAWC,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAC,MAAA,EAAAV,QAAAC,SAAAJ,IAAAO,QAAAC,aAAAG;CAAwD,IAAAG;AAAA,KAAAF,EAAA,OAAAT,QAAA;AAC1CW,cAAO,EAAA,GAAKX,QAAQ;AAACS,IAAA,KAAAT;AAAAS,IAAA,KAAAE;OAAAA,MAAAF,EAAA;AAAnD3B,qBAAoBuB,UAAUM,GAAsB;CAAA,IAAAC;AAAA,KAAAH,EAAA,OAAAT,UAAAS,EAAA,OAAAL,QAAA;AAQ/CQ,OAAA,OAAOR,WAAW,aAAaA,OAAOJ,OAAgB,GAAtDI;AAAsDK,IAAA,KAAAT;AAAAS,IAAA,KAAAL;AAAAK,IAAA,KAAAG;OAAAA,MAAAH,EAAA;CAAA,IAAAI;AAAA,KAAAJ,EAAA,OAAAR,WAAAQ,EAAA,OAAAZ,MAAAY,EAAA,OAAAT,OAAAc,gBAAAL,EAAA,OAAAG,IAAA;AANzDC,OAAA,sBAAA,cAAA,QAAA;GACOZ,KAAAA;GACK,UAAAD,OAAMc;GACJ,YAAA;GACRjB;GAGC,EADJe,GACI;AAAAH,IAAA,KAAAR;AAAAQ,IAAA,KAAAZ;AAAAY,IAAA,KAAAT,OAAAc;AAAAL,IAAA,KAAAG;AAAAH,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;AAAA,QAPPI;;AAWJ,MAAME,aAAYP,IAAAQ,QAAA;CAAA,MAAAP,IAAAC,EAAA,GAAA;CAAA,IAAAhB;CAAA,IAAAG;CAAA,IAAAF;CAAA,IAAAsB;AAAA,KAAAR,EAAA,OAAAD,IAAA;AAChB,GAAA,CAAAJ,QAAAa,YAAAvB,UAAAG,OAAAF,SAAAa;AAAyDC,IAAA,KAAAD;AAAAC,IAAA,KAAAf;AAAAe,IAAA,KAAAZ;AAAAY,IAAA,KAAAd;AAAAc,IAAA,KAAAQ;QAAA;AAAAvB,aAAAe,EAAA;AAAAZ,OAAAY,EAAA;AAAAd,UAAAc,EAAA;AAAAQ,eAAAR,EAAA;;CAGzD,MAAAL,SAAea,cAAAvB;CACf,MAAAO,UAAgBlB,OAAwB,KAAK;CAAC,IAAA4B;CAAA,IAAAC;AAAA,KAAAH,EAAA,OAAAZ,IAAA;AAGpCc,aAAA;AACR,OAAId,MAAMI,QAAOiB,SAAQ;AACvB1B,iBAAY2B,SAAUtB,IAAII,QAAOiB,QAAS;AAAA,iBAC7B1B,aAAY4B,WAAYvB,GAAG;;;AAEzCe,OAAA,CAACf,GAAG;AAAAY,IAAA,KAAAZ;AAAAY,IAAA,KAAAE;AAAAF,IAAA,KAAAG;QAAA;AAAAD,OAAAF,EAAA;AAAAG,OAAAH,EAAA;;AALPzB,WAAU2B,IAKPC,GAAK;CAAA,IAAAC;AAAA,KAAAJ,EAAA,OAAAY,OAAAC,IAAA,4BAAA,EAAA;AAG2BT,OAAA,CAACf,cAAc;AAAAW,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;CAAA,IAAAc;AAAA,KAAAd,EAAA,OAAAZ,MAAAY,EAAA,QAAAO,OAAAP,EAAA,QAAAL,QAAA;AAC7CmB,QAAAvB,WACC,sBAAA,cAAC,UAAD;GACUA;GACCC;GACLJ;GACIO;GACEY,UAAAA;GAEb,CAAA;AAAAP,IAAA,KAAAZ;AAAAY,IAAA,MAAAO;AAAAP,IAAA,MAAAL;AAAAK,IAAA,MAAAc;OAAAA,MAAAd,EAAA;CAAA,IAAAe;AAAA,KAAAf,EAAA,QAAAd,SAAAc,EAAA,QAAAO,OAAAP,EAAA,QAAAc,IAAA;AATHC,OAAA,sBAAA,cAAC,MAAD;GAAgBR;GAAiB,YAAAH;GAAe,GAAMlB;GAU1C,EATT4B,GASS;AAAAd,IAAA,MAAAd;AAAAc,IAAA,MAAAO;AAAAP,IAAA,MAAAc;AAAAd,IAAA,MAAAe;OAAAA,MAAAf,EAAA;AAAA,QAVZe;;AAcJ,MAAatC,SAA4BL,WAAWkC,UAAU"}