import type { DocumentType } from '@/api/ius/types'; import type { PageUrlParams } from '@/utils/url'; import type { PropsWithChildren } from 'react'; import { createContext, useMemo, useState } from 'react'; type FormStatus = 'pending' | 'edit' | 'success' | 'error'; type FormState = { status: FormStatus; text?: string }; type FormFile = DocumentType & { file: File }; type ContextType = { readonly formFiles: FormFile[]; readonly formState: FormState; readonly pageUrlParams: PageUrlParams; readonly setFormFiles: (files: FormFile[]) => void; readonly setFormState: (formState: FormState) => void; }; export const FormContext = createContext({} as ContextType); export function FormContextProvider({ children, ...initialData }: PropsWithChildren & Pick) { const [formState, setFormState] = useState({ status: 'edit' }); const [formFiles, setFormFiles] = useState([]); const value = useMemo( () => ({ ...initialData, formFiles, formState, setFormFiles, setFormState }), [formFiles, formState, initialData] ); return {children}; }