import { Card, Text, TextInput } from '@mantine/core'; import { isEqual } from 'lodash'; import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { i18n } from 'vj/utils'; import FileSelectAutoComplete from '../autocomplete/components/FileSelectAutoComplete'; import LanguageSelectAutoComplete from '../autocomplete/components/LanguageSelectAutoComplete'; import { FormItem } from './BasicForm'; import ProblemType from './ProblemType'; import type { RootState } from './reducer/index'; function FileIOConfig() { const filename = useSelector((state: RootState) => state.config.filename); const dispatch = useDispatch(); return (
.in/.out} rightSectionWidth={100} rightSectionPointerEvents="none" value={filename || ''} onChange={(ev) => { dispatch({ type: 'problemconfig/updateFileIO', filename: ev.currentTarget.value }); }} style={{ width: '100%' }} />
); } function ExtraFilesConfig() { const Files = useSelector((state: RootState) => state.testdata); const userExtraFiles = useSelector((state: RootState) => state.config.user_extra_files || [], isEqual); const judgeExtraFiles = useSelector((state: RootState) => state.config.judge_extra_files || [], isEqual); const dispatch = useDispatch(); return (
dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'user_extra_files', value: val.split(',') })} multi /> dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'judge_extra_files', value: val.split(',') })} multi />
); } function LangConfig() { const langs = useSelector((state: RootState) => state.config.langs) || []; const dispatch = useDispatch(); return (
dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'langs', value: value.split(',') })} multi />
); } export default function ProblemConfigForm() { const Type = useSelector((state: RootState) => state.config.type); return (
{Type === 'default' && } {!['submit_answer', 'objective'].includes(Type) && ( <> )}
); }