import React from 'react'; import { Box } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import { useRainbowThemeContext } from '../shared/RainbowThemeProvider'; import { useWorkbenchState, useToolSelection } from '../../contexts/ToolWorkflowContext'; import { useFileHandler } from '../../hooks/useFileHandler'; import { useFileContext } from '../../contexts/FileContext'; import TopControls from '../shared/TopControls'; import FileEditor from '../fileEditor/FileEditor'; import PageEditor from '../pageEditor/PageEditor'; import PageEditorControls from '../pageEditor/PageEditorControls'; import Viewer from '../viewer/Viewer'; import ToolRenderer from '../tools/ToolRenderer'; import LandingPage from '../shared/LandingPage'; // No props needed - component uses contexts directly export default function Workbench() { const { t } = useTranslation(); const { isRainbowMode } = useRainbowThemeContext(); // Use context-based hooks to eliminate all prop drilling const { activeFiles, currentView, setCurrentView } = useFileContext(); const { previewFile, pageEditorFunctions, sidebarsVisible, setPreviewFile, setPageEditorFunctions, setSidebarsVisible } = useWorkbenchState(); const { selectedToolKey, selectedTool, handleToolSelect } = useToolSelection(); const { addToActiveFiles } = useFileHandler(); const handlePreviewClose = () => { setPreviewFile(null); const previousMode = sessionStorage.getItem('previousMode'); if (previousMode === 'split') { // Use context's handleToolSelect which coordinates tool selection and view changes handleToolSelect('split'); sessionStorage.removeItem('previousMode'); } else if (previousMode === 'compress') { handleToolSelect('compress'); sessionStorage.removeItem('previousMode'); } else if (previousMode === 'convert') { handleToolSelect('convert'); sessionStorage.removeItem('previousMode'); } else { setCurrentView('fileEditor' as any); } }; const renderMainContent = () => { if (!activeFiles[0]) { return ( ); } switch (currentView) { case "fileEditor": return ( { setCurrentView("pageEditor" as any); }, onMergeFiles: (filesToMerge) => { filesToMerge.forEach(addToActiveFiles); setCurrentView("viewer" as any); } })} /> ); case "viewer": return ( ); case "pageEditor": return ( <> {pageEditorFunctions && ( )} ); default: // Check if it's a tool view if (selectedToolKey && selectedTool) { return ( ); } return ( ); } }; return ( {/* Top Controls */} {/* Main content area */} {renderMainContent()} ); }