"use client"; import { useState } from "react"; import { FileUploadComponent } from "./components/FileUploadComponent"; import { EntityMappingTable } from "./components/EntityMappingTable"; import { ProgressBar } from "./components/ProgressBar"; import { useFileHandler } from "./components/FileHandler"; import { useAnonymization } from "./components/AnonymizationLogic"; import { useDownloadActions } from "./components/DownloadActions"; interface EntityMapping { originalValue: string; anonymizedValue: string; entityType: string; startIndex: number; endIndex: number; } export default function Home() { const [sourceText, setSourceText] = useState(""); const [outputText, setOutputText] = useState(""); const [uploadedFile, setUploadedFile] = useState(null); const [fileContent, setFileContent] = useState(""); const [error, setError] = useState(null); const [isLoadingFile, setIsLoadingFile] = useState(false); const [entityMappings, setEntityMappings] = useState([]); const [isExampleLoaded, setIsExampleLoaded] = useState(false); // NOUVEAU const progressSteps = ["Téléversement", "Prévisualisation", "Anonymisation"]; const getCurrentStep = () => { if (outputText) return 3; if (uploadedFile || (sourceText && sourceText.trim())) return 2; return 1; }; // Fonction pour recommencer (retourner à l'état initial) const handleRestart = () => { setSourceText(""); setOutputText(""); setUploadedFile(null); setFileContent(""); setError(null); setIsLoadingFile(false); setEntityMappings([]); setIsExampleLoaded(false); // NOUVEAU }; // Hooks personnalisés pour la logique métier const { handleFileChange } = useFileHandler({ setUploadedFile, setSourceText, setFileContent, setError, setIsLoadingFile, // Passer le setter }); const { anonymizeData, isProcessing } = useAnonymization({ sourceText, fileContent, uploadedFile, setOutputText, setError, setEntityMappings, }); const { copyToClipboard, downloadText } = useDownloadActions({ outputText }); return (
{/* Main Content */}
{/* Progress Bar */} {/* Upload Section */}
{/* Entity Mapping Table - Seulement si outputText existe */} {outputText && (
)} {/* Error Message - Version améliorée */} {error && (

{error.includes("scanné") ? "📄 PDF Scanné Détecté" : error.includes("HTTP") ? "🚨 Erreur de Traitement" : "⚠️ Erreur"}

{error.split("\n").map((line, index) => (
0 ? "mt-2" : ""}> {line.startsWith("💡") ? (
{line}
) : line.startsWith("-") ? (
{line}
) : ( line )}
))}
)}
); }