import { Stack, TextInput, Checkbox, Anchor, Text } from '@mantine/core'; import LocalIcon from '../../shared/LocalIcon'; import { useTranslation } from 'react-i18next'; import { SPLIT_METHODS } from '../../../constants/splitConstants'; import { SplitParameters } from '../../../hooks/tools/split/useSplitParameters'; export interface SplitSettingsProps { parameters: SplitParameters; onParameterChange: (key: K, value: SplitParameters[K]) => void; disabled?: boolean; } const SplitSettings = ({ parameters, onParameterChange, disabled = false }: SplitSettingsProps) => { const { t } = useTranslation(); const renderByPagesForm = () => ( onParameterChange('pages', e.target.value)} disabled={disabled} /> ); const renderBySectionsForm = () => ( onParameterChange('hDiv', e.target.value)} placeholder={t("split-by-sections.horizontal.placeholder", "Enter number of horizontal divisions")} disabled={disabled} /> onParameterChange('vDiv', e.target.value)} placeholder={t("split-by-sections.vertical.placeholder", "Enter number of vertical divisions")} disabled={disabled} /> onParameterChange('merge', e.currentTarget.checked)} disabled={disabled} /> ); const renderSplitValueForm = () => { let label, placeholder; switch (parameters.method) { case SPLIT_METHODS.BY_SIZE: label = t("split.value.fileSize.label", "File Size"); placeholder = t("split.value.fileSize.placeholder", "e.g. 10MB, 500KB"); break; case SPLIT_METHODS.BY_PAGE_COUNT: label = t("split.value.pageCount.label", "Pages per File"); placeholder = t("split.value.pageCount.placeholder", "e.g. 5, 10"); break; case SPLIT_METHODS.BY_DOC_COUNT: label = t("split.value.docCount.label", "Number of Files"); placeholder = t("split.value.docCount.placeholder", "e.g. 3, 5"); break; default: label = t("split-by-size-or-count.value.label", "Split Value"); placeholder = t("split-by-size-or-count.value.placeholder", "e.g. 10MB or 5 pages"); } return ( onParameterChange('splitValue', e.target.value)} disabled={disabled} /> ); }; const renderByChaptersForm = () => ( onParameterChange('bookmarkLevel', e.target.value)} disabled={disabled} /> onParameterChange('includeMetadata', e.currentTarget.checked)} disabled={disabled} /> onParameterChange('allowDuplicates', e.currentTarget.checked)} disabled={disabled} /> ); const renderByPageDividerForm = () => ( {t("autoSplitPDF.dividerDownload2", "Download 'Auto Splitter Divider (with instructions).pdf'")} onParameterChange('duplexMode', e.currentTarget.checked)} disabled={disabled} /> ); // Don't render anything if no method is selected if (!parameters.method) { return ( {t("split.settings.selectMethodFirst", "Please select a split method first")} ); } return ( {/* Method-Specific Form */} {parameters.method === SPLIT_METHODS.BY_PAGES && renderByPagesForm()} {parameters.method === SPLIT_METHODS.BY_SECTIONS && renderBySectionsForm()} {(parameters.method === SPLIT_METHODS.BY_SIZE || parameters.method === SPLIT_METHODS.BY_PAGE_COUNT || parameters.method === SPLIT_METHODS.BY_DOC_COUNT) && renderSplitValueForm()} {parameters.method === SPLIT_METHODS.BY_CHAPTERS && renderByChaptersForm()} {parameters.method === SPLIT_METHODS.BY_PAGE_DIVIDER && renderByPageDividerForm()} ); } export default SplitSettings;