import React, { useState, useCallback } from "react"; import { Box, Group, Container } from "@mantine/core"; import TopControls from "../components/shared/TopControls"; import FileManager from "../components/fileManagement/FileManager"; import FileEditor from "../components/editor/FileEditor"; import PageEditor from "../components/editor/PageEditor"; import PageEditorControls from "../components/editor/PageEditorControls"; import Viewer from "../components/viewer/Viewer"; import FileUploadSelector from "../components/shared/FileUploadSelector"; export default function HomePage() { const [files, setFiles] = useState([]); // Array of { file, url } const [preSelectedFiles, setPreSelectedFiles] = useState([]); const [currentView, setCurrentView] = useState("fileManager"); const [sidebarsVisible, setSidebarsVisible] = useState(true); const [downloadUrl, setDownloadUrl] = useState(null); const [pageEditorFunctions, setPageEditorFunctions] = useState(null); // Handle file selection from upload const handleFileSelect = useCallback((file) => { const fileObj = { file, url: URL.createObjectURL(file) }; setFiles([fileObj]); }, []); // Handle opening file editor with selected files const handleOpenFileEditor = useCallback((selectedFiles) => { setPreSelectedFiles(selectedFiles || []); setCurrentView("fileEditor"); }, []); return ( {/* Top Controls */} {/* Main content area */} {currentView === "fileManager" ? ( ) : (currentView !== "fileManager") && !files[0] ? ( ) : currentView === "fileEditor" ? ( setPreSelectedFiles([])} onOpenPageEditor={(file) => { const fileObj = { file, url: URL.createObjectURL(file) }; setFiles([fileObj]); setCurrentView("pageEditor"); }} onMergeFiles={(filesToMerge) => { setFiles(filesToMerge.map(f => ({ file: f, url: URL.createObjectURL(f) }))); setCurrentView("viewer"); }} /> ) : currentView === "viewer" ? ( setFiles([fileObj])} sidebarsVisible={sidebarsVisible} setSidebarsVisible={setSidebarsVisible} /> ) : currentView === "pageEditor" ? ( <> setFiles([fileObj])} downloadUrl={downloadUrl} setDownloadUrl={setDownloadUrl} onFunctionsReady={setPageEditorFunctions} sharedFiles={files} /> {files[0] && pageEditorFunctions && ( pageEditorFunctions.showExportPreview(true)} onExportAll={() => pageEditorFunctions.showExportPreview(false)} exportLoading={pageEditorFunctions.exportLoading} selectionMode={pageEditorFunctions.selectionMode} selectedPages={pageEditorFunctions.selectedPages} /> )} ) : ( )} ); }