// @ts-nocheck import React, { Dispatch, SetStateAction, createContext, useContext, useState, } from 'react'; export type EntityColumnField = { key: string; name: string; required?: boolean; hint?: string; group?: string; }; export interface EntityColumn { groupKey: string; groupLabel: string; fields: EntityColumnField[]; } export type SheetColumn = string; export type SheetMap = { from: string; to: string }; interface ImportFileContextValue { sheetColumns: SheetColumn[]; setSheetColumns: Dispatch>; entityColumns: EntityColumn[]; setEntityColumns: Dispatch>; sheetMapping: SheetMap[]; setSheetMapping: Dispatch>; step: number; setStep: Dispatch>; importId: string; setImportId: Dispatch>; resource: string; description?: string; params: Record; onImportSuccess?: () => void; onImportFailed?: () => void; onCancelClick?: () => void; sampleFileName?: string; exampleDownload?: boolean; exampleTitle?: string; exampleDescription?: string; } interface ImportFileProviderProps { resource: string; description?: string; params: Record; onImportSuccess?: () => void; onImportFailed?: () => void; onCancelClick?: () => void; children: React.ReactNode; sampleFileName?: string; exampleDownload?: boolean; exampleTitle?: string; exampleDescription?: string; } const ExampleDescription = 'You can download the sample file to obtain detailed information about the data fields used during the import.'; const ExampleTitle = 'Table Example'; const ImportFileContext = createContext( {} as ImportFileContextValue, ); export const useImportFileContext = () => { const context = useContext(ImportFileContext); if (!context) { throw new Error( 'useImportFileContext must be used within an ImportFileProvider', ); } return context; }; export const ImportFileProvider = ({ resource, children, description, params, onImportFailed, onImportSuccess, onCancelClick, sampleFileName, exampleDownload = true, exampleTitle = ExampleTitle, exampleDescription = ExampleDescription, }: ImportFileProviderProps) => { const [sheetColumns, setSheetColumns] = useState([]); const [entityColumns, setEntityColumns] = useState([]); const [sheetMapping, setSheetMapping] = useState([]); const [importId, setImportId] = useState(''); const [step, setStep] = useState(0); const value = { sheetColumns, setSheetColumns, entityColumns, setEntityColumns, sheetMapping, setSheetMapping, step, setStep, importId, setImportId, resource, description, params, onImportSuccess, onImportFailed, onCancelClick, sampleFileName, exampleDownload, exampleTitle, exampleDescription, }; return ( {children} ); };