updateToolParams(selectedToolKey, newParams)}
toolSelectedFiles={toolSelectedFiles}
onPreviewFile={setPreviewFile}
/>
@@ -409,7 +164,7 @@ export default function HomePage() {
selectedToolKey={selectedToolKey}
/>
{/* Main content area */}
- {
addToActiveFiles(file);
}}
@@ -439,7 +193,6 @@ export default function HomePage() {
) : currentView === "fileEditor" ? (
{
- setCurrentActiveFile(file);
handleViewChange("pageEditor");
}}
onMergeFiles={(filesToMerge) => {
@@ -450,14 +203,6 @@ export default function HomePage() {
/>
) : currentView === "viewer" ? (
{
- if (fileObj) {
- setCurrentActiveFile(fileObj.file);
- } else {
- fileContext.clearAllFiles();
- }
- }}
sidebarsVisible={sidebarsVisible}
setSidebarsVisible={setSidebarsVisible}
previewFile={previewFile}
@@ -466,7 +211,7 @@ export default function HomePage() {
setPreviewFile(null); // Clear preview file
const previousMode = sessionStorage.getItem('previousMode');
if (previousMode === 'split') {
- setSelectedToolKey('split');
+ selectTool('split');
setCurrentView('split');
setLeftPanelView('toolContent');
sessionStorage.removeItem('previousMode');
@@ -512,20 +257,12 @@ export default function HomePage() {
) : selectedToolKey && selectedTool ? (
{}}
/>
) : (
{
addToActiveFiles(file);
}}
diff --git a/frontend/src/tools/Split.tsx b/frontend/src/tools/Split.tsx
index c06451800..0a03c2794 100644
--- a/frontend/src/tools/Split.tsx
+++ b/frontend/src/tools/Split.tsx
@@ -26,26 +26,11 @@ import { generateThumbnailForFile } from "../utils/thumbnailUtils";
import FileEditor from "../components/fileEditor/FileEditor";
export interface SplitPdfPanelProps {
- params: {
- mode: string;
- pages: string;
- hDiv: string;
- vDiv: string;
- merge: boolean;
- splitType: string;
- splitValue: string;
- bookmarkLevel: string;
- includeMetadata: boolean;
- allowDuplicates: boolean;
- };
- updateParams: (newParams: Partial) => void;
selectedFiles?: File[];
onPreviewFile?: (file: File | null) => void;
}
const SplitPdfPanel: React.FC = ({
- params,
- updateParams,
selectedFiles = [],
onPreviewFile,
}) => {
@@ -53,6 +38,18 @@ const SplitPdfPanel: React.FC = ({
const fileContext = useFileContext();
const { activeFiles, selectedFileIds, updateProcessedFile, recordOperation, markOperationApplied, markOperationFailed, setCurrentMode } = fileContext;
+ // Internal split parameter state
+ const [mode, setMode] = useState('');
+ const [pages, setPages] = useState('');
+ const [hDiv, setHDiv] = useState('2');
+ const [vDiv, setVDiv] = useState('2');
+ const [merge, setMerge] = useState(false);
+ const [splitType, setSplitType] = useState('size');
+ const [splitValue, setSplitValue] = useState('');
+ const [bookmarkLevel, setBookmarkLevel] = useState('1');
+ const [includeMetadata, setIncludeMetadata] = useState(false);
+ const [allowDuplicates, setAllowDuplicates] = useState(false);
+
const [status, setStatus] = useState("");
const [isLoading, setIsLoading] = useState(false);
const [errorMessage, setErrorMessage] = useState(null);
@@ -67,19 +64,6 @@ const SplitPdfPanel: React.FC = ({
isGeneratingThumbnails: false
});
- const {
- mode,
- pages,
- hDiv,
- vDiv,
- merge,
- splitType,
- splitValue,
- bookmarkLevel,
- includeMetadata,
- allowDuplicates,
- } = params;
-
// Clear download when parameters or files change
React.useEffect(() => {
if (downloadUrl) {
@@ -339,7 +323,7 @@ const SplitPdfPanel: React.FC = ({
label="Choose split method"
placeholder="Select how to split the PDF"
value={mode}
- onChange={(v) => v && updateParams({ mode: v })}
+ onChange={(v) => v && setMode(v)}
data={[
{ value: "byPages", label: t("split.header", "Split by Pages") + " (e.g. 1,3,5-10)" },
{ value: "bySections", label: t("split-by-sections.title", "Split by Grid Sections") },
@@ -354,7 +338,7 @@ const SplitPdfPanel: React.FC = ({
label={t("split.splitPages", "Pages")}
placeholder={t("pageSelectionPrompt", "e.g. 1,3,5-10")}
value={pages}
- onChange={(e) => updateParams({ pages: e.target.value })}
+ onChange={(e) => setPages(e.target.value)}
/>
)}
@@ -366,7 +350,7 @@ const SplitPdfPanel: React.FC = ({
min="0"
max="300"
value={hDiv}
- onChange={(e) => updateParams({ hDiv: e.target.value })}
+ onChange={(e) => setHDiv(e.target.value)}
placeholder={t("split-by-sections.horizontal.placeholder", "Enter number of horizontal divisions")}
/>
= ({
min="0"
max="300"
value={vDiv}
- onChange={(e) => updateParams({ vDiv: e.target.value })}
+ onChange={(e) => setVDiv(e.target.value)}
placeholder={t("split-by-sections.vertical.placeholder", "Enter number of vertical divisions")}
/>
updateParams({ merge: e.currentTarget.checked })}
+ onChange={(e) => setMerge(e.currentTarget.checked)}
/>
)}
@@ -391,7 +375,7 @@ const SplitPdfPanel: React.FC = ({