import { Box, Stack } from '@mui/material'; import Grid from '@mui/material/Grid'; import React, { useContext, useEffect, useState } from 'react'; import ToolTextInput from '../../../components/input/ToolTextInput'; import ToolTextResult from '../../../components/result/ToolTextResult'; import { Formik, useFormikContext } from 'formik'; import * as Yup from 'yup'; import ToolOptions from '../../../components/options/ToolOptions'; import { compute } from './service'; import { CustomSnackBarContext } from '../../../contexts/CustomSnackBarContext'; import TextFieldWithDesc from '../../../components/options/TextFieldWithDesc'; import ToolOptionGroups from '../../../components/options/ToolOptionGroups'; import ToolInputAndResult from '../../../components/ToolInputAndResult'; const initialValues = { dotSymbol: '.', dashSymbol: '-' }; export default function ToMorse() { const [input, setInput] = useState(''); const [result, setResult] = useState(''); // const formRef = useRef>(null); const { showSnackBar } = useContext(CustomSnackBarContext); const FormikListenerComponent = () => { const { values } = useFormikContext(); useEffect(() => { try { const { dotSymbol, dashSymbol } = values; setResult(compute(input, dotSymbol, dashSymbol)); } catch (exception: unknown) { if (exception instanceof Error) showSnackBar(exception.message, 'error'); } }, [values, input]); return null; // This component doesn't render anything }; const validationSchema = Yup.object({ // splitSeparator: Yup.string().required('The separator is required') }); return ( } result={} /> {}} > {({ setFieldValue, values }) => ( setFieldValue('dotSymbol', val)} /> ) }, { title: 'Long Signal', component: ( setFieldValue('dashSymbol', val)} /> ) } ]} /> )} ); }