UNPKG

koval-ui

Version:

React components collection with minimalistic design. Supports theming, layout, and input validation.

1 lines 1.56 kB
{"version":3,"file":"withFormProvider.cjs","sources":["../../../../src/lib/Form/withFormProvider.tsx"],"sourcesContent":["import type {JSX, ExoticComponent} from 'react';\nimport {useMemo, useReducer, forwardRef} from 'react';\n\nimport {FormReducer, initialState} from './FormReducer.ts';\nimport {FormContext} from './FormContext.tsx';\n\nexport const withFormProvider = <TProps extends JSX.IntrinsicAttributes>(\n Component: ExoticComponent<TProps>\n) => {\n const {Provider} = FormContext;\n const FormProvider = forwardRef<HTMLFormElement, TProps>((props, ref) => {\n const [state, dispatch] = useReducer(FormReducer, initialState);\n const memoizedValue = useMemo(() => ({state, dispatch}), [state]);\n return (\n <Provider value={memoizedValue}>\n <Component {...(props as TProps)} ref={ref} />\n </Provider>\n );\n });\n FormProvider.displayName = 'FormProvider';\n return FormProvider;\n};\n"],"names":["withFormProvider","Component","Provider","FormContext","FormProvider","forwardRef","props","ref","state","dispatch","useReducer","FormReducer","initialState","memoizedValue","useMemo","jsx"],"mappings":"mNAMaA,EACTC,GACC,CACK,KAAA,CAAC,SAAAC,GAAYC,EAAA,YACbC,EAAeC,EAAAA,WAAoC,CAACC,EAAOC,IAAQ,CACrE,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,WAAWC,EAAAA,YAAaC,EAAAA,YAAY,EACxDC,EAAgBC,UAAQ,KAAO,CAAC,MAAAN,EAAO,SAAAC,IAAY,CAACD,CAAK,CAAC,EAE5D,OAAAO,EAAA,IAACb,GAAS,MAAOW,EACb,eAACZ,EAAW,CAAA,GAAIK,EAAkB,IAAAC,CAAA,CAAU,CAChD,CAAA,CAAA,CAEP,EACD,OAAAH,EAAa,YAAc,eACpBA,CACX"}