mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-29 14:31:35 +08:00
feat(inputbar): drop text into inputbar (#8579)
feat(输入栏): 添加从拖拽事件获取文本的功能 新增getTextFromDropEvent工具函数,用于从拖拽事件中提取文本数据 在Inputbar组件中集成该功能,支持拖拽文本到输入框
This commit is contained in:
parent
eb309563a9
commit
5bafb3f1b7
@ -37,7 +37,12 @@ import { Assistant, FileType, FileTypes, KnowledgeBase, KnowledgeItem, Model, To
|
||||
import type { MessageInputBaseParams } from '@renderer/types/newMessage'
|
||||
import { classNames, delay, formatFileSize, getFileExtension } from '@renderer/utils'
|
||||
import { formatQuotedText } from '@renderer/utils/formats'
|
||||
import { getFilesFromDropEvent, getSendMessageShortcutLabel, isSendMessageKeyPressed } from '@renderer/utils/input'
|
||||
import {
|
||||
getFilesFromDropEvent,
|
||||
getSendMessageShortcutLabel,
|
||||
getTextFromDropEvent,
|
||||
isSendMessageKeyPressed
|
||||
} from '@renderer/utils/input'
|
||||
import { getLanguageByLangcode } from '@renderer/utils/translate'
|
||||
import { documentExts, imageExts, textExts } from '@shared/config/constant'
|
||||
import { IpcChannel } from '@shared/IpcChannel'
|
||||
@ -567,6 +572,10 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
||||
e.stopPropagation()
|
||||
setIsFileDragging(false)
|
||||
|
||||
const data = await getTextFromDropEvent(e)
|
||||
|
||||
setText(text + data)
|
||||
|
||||
const files = await getFilesFromDropEvent(e).catch((err) => {
|
||||
logger.error('handleDrop:', err)
|
||||
return null
|
||||
@ -591,7 +600,7 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
||||
}
|
||||
}
|
||||
},
|
||||
[supportedExts, t]
|
||||
[supportedExts, t, text]
|
||||
)
|
||||
|
||||
const onTranslated = (translatedText: string) => {
|
||||
|
||||
@ -5,6 +5,10 @@ import { FileMetadata } from '@renderer/types'
|
||||
|
||||
const logger = loggerService.withContext('Utils:Input')
|
||||
|
||||
export const getTextFromDropEvent = async (e: React.DragEvent<HTMLDivElement>): Promise<string> => {
|
||||
return e.dataTransfer.getData('text')
|
||||
}
|
||||
|
||||
export const getFilesFromDropEvent = async (e: React.DragEvent<HTMLDivElement>): Promise<FileMetadata[]> => {
|
||||
if (e.dataTransfer.files.length > 0) {
|
||||
// 使用新的API获取文件路径
|
||||
|
||||
Loading…
Reference in New Issue
Block a user