import React from "react"; import { Stack, Text, Select, NumberInput, Group, Divider, UnstyledButton, useMantineTheme, useMantineColorScheme } from "@mantine/core"; import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import { useTranslation } from "react-i18next"; import GroupedFormatDropdown from "./GroupedFormatDropdown"; import { ConvertParameters } from "../../../hooks/tools/convert/useConvertParameters"; import { FROM_FORMAT_OPTIONS, TO_FORMAT_OPTIONS, COLOR_TYPES, OUTPUT_OPTIONS, } from "../../../constants/convertConstants"; interface ConvertSettingsProps { parameters: ConvertParameters; onParameterChange: (key: keyof ConvertParameters, value: any) => void; getAvailableToExtensions: (fromExtension: string) => Array<{value: string, label: string, group: string}>; disabled?: boolean; } const ConvertSettings = ({ parameters, onParameterChange, getAvailableToExtensions, disabled = false }: ConvertSettingsProps) => { const { t } = useTranslation(); const theme = useMantineTheme(); const { colorScheme } = useMantineColorScheme(); const handleFromExtensionChange = (value: string) => { onParameterChange('fromExtension', value); // Reset to extension when from extension changes onParameterChange('toExtension', ''); // Reset format-specific options onParameterChange('imageOptions', { colorType: COLOR_TYPES.COLOR, dpi: 300, singleOrMultiple: OUTPUT_OPTIONS.MULTIPLE, }); }; const handleToExtensionChange = (value: string) => { onParameterChange('toExtension', value); // Reset format-specific options when target extension changes onParameterChange('imageOptions', { colorType: COLOR_TYPES.COLOR, dpi: 300, singleOrMultiple: OUTPUT_OPTIONS.MULTIPLE, }); }; return ( {/* Format Selection */} {t("convert.convertFrom", "Convert from")}: {t("convert.convertTo", "Convert to")}: {!parameters.fromExtension ? ( Select a source format first ) : ( )} {/* Format-specific options */} {['png', 'jpg'].includes(parameters.toExtension) && ( <> {t("convert.imageOptions", "Image Options")}: val && onParameterChange('imageOptions', { ...parameters.imageOptions, singleOrMultiple: val as typeof OUTPUT_OPTIONS[keyof typeof OUTPUT_OPTIONS] })} data={[ { value: OUTPUT_OPTIONS.SINGLE, label: t("convert.single", "Single") }, { value: OUTPUT_OPTIONS.MULTIPLE, label: t("convert.multiple", "Multiple") }, ]} disabled={disabled} /> )} {/* Color options for image to PDF conversion */} {['jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'webp'].includes(parameters.fromExtension) && parameters.toExtension === 'pdf' && ( <> {t("convert.pdfOptions", "PDF Options")}: