import { Stack, TextInput, Select, Checkbox } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import { isSplitMethod, 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} /> ); return ( {/* Method Selector */}