mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-09-23 20:16:15 +00:00
Compare commits
3 Commits
aa3797cb22
...
ad7cd6a417
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ad7cd6a417 | ||
![]() |
2302949856 | ||
![]() |
792140a36f |
@ -19,7 +19,7 @@ const RemoveBlanksSettings = ({ parameters, onParameterChange, disabled = false
|
||||
label={t('removeBlanks.threshold.label', 'Pixel Whiteness Threshold')}
|
||||
value={parameters.threshold}
|
||||
onChange={(v) => onParameterChange('threshold', typeof v === 'string' ? Number(v) : v)}
|
||||
unit={t('removeBlanks.threshold.unit', '')}
|
||||
unit=''
|
||||
min={0}
|
||||
max={255}
|
||||
disabled={disabled}
|
||||
@ -31,7 +31,7 @@ const RemoveBlanksSettings = ({ parameters, onParameterChange, disabled = false
|
||||
label={t('removeBlanks.whitePercent.label', 'White Percent')}
|
||||
value={parameters.whitePercent}
|
||||
onChange={(v) => onParameterChange('whitePercent', typeof v === 'string' ? Number(v) : v)}
|
||||
unit={t('removeBlanks.whitePercent.unit', '%')}
|
||||
unit='%'
|
||||
min={0.1}
|
||||
max={100}
|
||||
disabled={disabled}
|
||||
|
@ -19,7 +19,6 @@ export const removeBlanksOperationConfig = {
|
||||
buildFormData: buildRemoveBlanksFormData,
|
||||
operationType: 'remove-blanks',
|
||||
endpoint: '/api/v1/misc/remove-blanks',
|
||||
filePrefix: 'noblank_',
|
||||
defaultParameters,
|
||||
} as const satisfies ToolOperationConfig<RemoveBlanksParameters>;
|
||||
|
||||
@ -35,7 +34,6 @@ export const useRemoveBlanksOperation = () => {
|
||||
return useToolOperation<RemoveBlanksParameters>({
|
||||
...removeBlanksOperationConfig,
|
||||
responseHandler,
|
||||
filePrefix: t('removeBlanks.filenamePrefix', 'noblank') + '_',
|
||||
getErrorMessage: createStandardErrorHandler(
|
||||
t('removeBlanks.error.failed', 'Failed to remove blank pages')
|
||||
)
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { useCallback } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ToolType, useToolOperation, ToolOperationConfig } from '../shared/useToolOperation';
|
||||
import { createStandardErrorHandler } from '../../../utils/toolErrorHandler';
|
||||
@ -17,24 +16,14 @@ export const removePagesOperationConfig = {
|
||||
buildFormData: buildRemovePagesFormData,
|
||||
operationType: 'remove-pages',
|
||||
endpoint: '/api/v1/general/remove-pages',
|
||||
filePrefix: 'removed_pages_',
|
||||
defaultParameters,
|
||||
} as const satisfies ToolOperationConfig<RemovePagesParameters>;
|
||||
|
||||
export const useRemovePagesOperation = () => {
|
||||
const { t } = useTranslation();
|
||||
// const { extractZipFiles } = useToolResources();
|
||||
|
||||
const responseHandler = useCallback(async (blob: Blob, originalFiles: File[]): Promise<File[]> => {
|
||||
// Backend returns a PDF for remove-pages
|
||||
const base = originalFiles[0]?.name?.replace(/\.[^.]+$/, '') || 'document';
|
||||
return [new File([blob], `removed_pages_${base}.pdf`, { type: 'application/pdf' })];
|
||||
}, []);
|
||||
|
||||
return useToolOperation<RemovePagesParameters>({
|
||||
...removePagesOperationConfig,
|
||||
responseHandler,
|
||||
filePrefix: t('removePages.filenamePrefix', 'removed_pages') + '_',
|
||||
getErrorMessage: createStandardErrorHandler(
|
||||
t('removePages.error.failed', 'Failed to remove pages')
|
||||
)
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { useState, useEffect } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { createToolFlow } from "../components/tools/shared/createToolFlow";
|
||||
import { BaseToolProps, ToolComponent } from "../types/tool";
|
||||
@ -19,23 +18,6 @@ const RemoveBlanks = (props: BaseToolProps) => {
|
||||
props
|
||||
);
|
||||
|
||||
// Step expansion state management
|
||||
const [expandedStep, setExpandedStep] = useState<"files" | "settings" | null>("files");
|
||||
|
||||
// Auto-expand settings when files are selected
|
||||
useEffect(() => {
|
||||
if (base.selectedFiles.length > 0 && expandedStep === "files") {
|
||||
setExpandedStep("settings");
|
||||
}
|
||||
}, [base.selectedFiles.length, expandedStep]);
|
||||
|
||||
// Collapse all steps when results appear
|
||||
useEffect(() => {
|
||||
if (base.hasResults) {
|
||||
setExpandedStep(null);
|
||||
}
|
||||
}, [base.hasResults]);
|
||||
|
||||
const settingsContent = (
|
||||
<RemoveBlanksSettings
|
||||
parameters={base.params.parameters}
|
||||
@ -47,9 +29,6 @@ const RemoveBlanks = (props: BaseToolProps) => {
|
||||
const handleSettingsClick = () => {
|
||||
if (base.hasResults) {
|
||||
base.handleSettingsReset();
|
||||
} else {
|
||||
if (!base.hasFiles) return;
|
||||
setExpandedStep(expandedStep === "settings" ? null : "settings");
|
||||
}
|
||||
};
|
||||
|
||||
@ -61,7 +40,7 @@ const RemoveBlanks = (props: BaseToolProps) => {
|
||||
steps: [
|
||||
{
|
||||
title: t("removeBlanks.settings.title", "Settings"),
|
||||
isCollapsed: expandedStep !== "settings",
|
||||
isCollapsed: base.settingsCollapsed,
|
||||
onCollapsedClick: handleSettingsClick,
|
||||
content: settingsContent,
|
||||
tooltip: tooltipContent,
|
||||
|
Loading…
x
Reference in New Issue
Block a user