Files
omni-tools/src/pages/tools/string/to-morse/index.tsx

62 lines
1.9 KiB
TypeScript
Raw Normal View History

2025-03-09 17:22:14 +00:00
import ToolContent from '@components/ToolContent';
2024-06-26 07:47:17 +01:00
import React, { useState } from 'react';
2025-02-23 01:38:42 +01:00
import ToolTextInput from '@components/input/ToolTextInput';
import ToolTextResult from '@components/result/ToolTextResult';
2024-06-25 02:07:57 +01:00
import { compute } from './service';
2025-02-23 01:38:42 +01:00
import TextFieldWithDesc from '@components/options/TextFieldWithDesc';
2025-07-12 23:02:35 -07:00
import { useTranslation } from 'react-i18next';
2024-06-25 02:07:57 +01:00
const initialValues = {
dotSymbol: '.',
dashSymbol: '-'
};
export default function ToMorse() {
2025-07-12 23:02:35 -07:00
const { t } = useTranslation();
2024-06-25 02:07:57 +01:00
const [input, setInput] = useState<string>('');
const [result, setResult] = useState<string>('');
2024-06-26 07:47:17 +01:00
const computeOptions = (optionsValues: typeof initialValues, input: any) => {
const { dotSymbol, dashSymbol } = optionsValues;
setResult(compute(input, dotSymbol, dashSymbol));
2024-06-25 02:07:57 +01:00
};
return (
2025-03-09 17:22:14 +00:00
<ToolContent
2025-07-12 23:02:35 -07:00
title={t('string.toMorse.title')}
2025-03-09 17:22:14 +00:00
initialValues={initialValues}
compute={computeOptions}
input={input}
setInput={setInput}
inputComponent={<ToolTextInput value={input} onChange={setInput} />}
2025-07-12 23:02:35 -07:00
resultComponent={
<ToolTextResult
title={t('string.toMorse.resultTitle')}
value={result}
/>
}
2025-03-09 17:22:14 +00:00
getGroups={({ values, updateField }) => [
{
2025-07-12 23:02:35 -07:00
title: t('string.toMorse.shortSignal'),
2025-03-09 17:22:14 +00:00
component: (
<TextFieldWithDesc
2025-07-12 23:02:35 -07:00
description={t('string.toMorse.dotSymbolDescription')}
2025-03-09 17:22:14 +00:00
value={values.dotSymbol}
onOwnChange={(val) => updateField('dotSymbol', val)}
/>
)
},
{
2025-07-12 23:02:35 -07:00
title: t('string.toMorse.longSignal'),
2025-03-09 17:22:14 +00:00
component: (
<TextFieldWithDesc
2025-07-12 23:02:35 -07:00
description={t('string.toMorse.dashSymbolDescription')}
2025-03-09 17:22:14 +00:00
value={values.dashSymbol}
onOwnChange={(val) => updateField('dashSymbol', val)}
/>
)
}
]}
/>
2024-06-25 02:07:57 +01:00
);
}