import React, { useCallback, useRef } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import TextareaAutosize from 'react-textarea-autosize'; import { Button, Form, TextArea } from 'semantic-ui-react'; import { useDeepCompareCallback, useForm } from '../../../hooks'; import styles from './AddComment.module.css'; const DEFAULT_DATA = { text: '', }; const AddComment = React.memo(({ onCreate }) => { const [t] = useTranslation(); const [data, handleFieldChange, setData] = useForm(DEFAULT_DATA); const textField = useRef(null); const submit = useDeepCompareCallback(() => { const cleanData = { ...data, text: data.text.trim(), }; if (!cleanData.text) { textField.current.ref.current.select(); return; } onCreate(cleanData); setData(DEFAULT_DATA); }, [onCreate, data, setData]); const handleFieldKeyDown = useCallback( (event) => { if (event.ctrlKey && event.key === 'Enter') { submit(); } }, [submit], ); const handleSubmit = useCallback(() => { submit(); }, [submit]); return (