import { useEffect, useRef, useState } from "react"; import { ProgressCard } from "@/components/common/progress-card"; import { useTranslation } from "@/contexts/i18n-context"; import { useToolProcessor } from "@/hooks/use-tool-processor"; import { format } from "@/lib/format"; import { useFileStore } from "@/stores/file-store"; type PerSheet = 2 | 3 | 4 | 8 | 9 | 12 | 16; export function NupPdfSettings() { const { t } = useTranslation(); const s = t.toolSettings["nup-pdf"]; const { files } = useFileStore(); const { processFiles, processAllFiles, processing, error, progress } = useToolProcessor("nup-pdf"); const [perSheet, setPerSheet] = useState(2); const hasFile = files.length > 0; const hasMultiple = files.length > 1; const handleProcess = () => { const settings = { perSheet }; if (hasMultiple) { processAllFiles(files, settings); } else { processFiles(files, settings); } }; return (
{error &&

{error}

} {processing ? ( ) : ( )}
); } export interface NupPdfControlsProps { settings?: Record; onChange?: (settings: Record) => void; } export function NupPdfControls({ settings: initial, onChange }: NupPdfControlsProps) { const { t } = useTranslation(); const s = t.toolSettings["nup-pdf"]; const [perSheet, setPerSheet] = useState(2); const initializedRef = useRef(false); useEffect(() => { if (!initial || initializedRef.current) return; initializedRef.current = true; if (initial.perSheet != null) setPerSheet(Number(initial.perSheet) as PerSheet); }, [initial]); const onChangeRef = useRef(onChange); useEffect(() => { onChangeRef.current = onChange; }); useEffect(() => { onChangeRef.current?.({ perSheet }); }, [perSheet]); return (
); }