|
|
|
|
@ -1,6 +1,5 @@
|
|
|
|
|
import {
|
|
|
|
|
useCallback,
|
|
|
|
|
useRef,
|
|
|
|
|
useState,
|
|
|
|
|
} from 'react'
|
|
|
|
|
import Textarea from 'rc-textarea'
|
|
|
|
|
@ -63,7 +62,6 @@ const ChatInputArea = ({
|
|
|
|
|
isMultipleLine,
|
|
|
|
|
} = useTextAreaHeight()
|
|
|
|
|
const [query, setQuery] = useState('')
|
|
|
|
|
const isUseInputMethod = useRef(false)
|
|
|
|
|
const [showVoiceInput, setShowVoiceInput] = useState(false)
|
|
|
|
|
const filesStore = useFileStore()
|
|
|
|
|
const {
|
|
|
|
|
@ -95,20 +93,11 @@ const ChatInputArea = ({
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleKeyUp = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
|
|
|
|
|
if (e.key === 'Enter') {
|
|
|
|
|
e.preventDefault()
|
|
|
|
|
// prevent send message when using input method enter
|
|
|
|
|
if (!e.shiftKey && !isUseInputMethod.current)
|
|
|
|
|
handleSend()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
|
|
|
|
|
isUseInputMethod.current = e.nativeEvent.isComposing
|
|
|
|
|
if (e.key === 'Enter' && !e.shiftKey) {
|
|
|
|
|
setQuery(query.replace(/\n$/, ''))
|
|
|
|
|
if (e.key === 'Enter' && !e.shiftKey && !e.nativeEvent.isComposing) {
|
|
|
|
|
e.preventDefault()
|
|
|
|
|
setQuery(query.replace(/\n$/, ''))
|
|
|
|
|
handleSend()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -165,7 +154,6 @@ const ChatInputArea = ({
|
|
|
|
|
setQuery(e.target.value)
|
|
|
|
|
handleTextareaResize()
|
|
|
|
|
}}
|
|
|
|
|
onKeyUp={handleKeyUp}
|
|
|
|
|
onKeyDown={handleKeyDown}
|
|
|
|
|
onPaste={handleClipboardPasteFile}
|
|
|
|
|
onDragEnter={handleDragFileEnter}
|
|
|
|
|
|