mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-08 14:29:15 +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 type { MessageInputBaseParams } from '@renderer/types/newMessage'
|
||||||
import { classNames, delay, formatFileSize, getFileExtension } from '@renderer/utils'
|
import { classNames, delay, formatFileSize, getFileExtension } from '@renderer/utils'
|
||||||
import { formatQuotedText } from '@renderer/utils/formats'
|
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 { getLanguageByLangcode } from '@renderer/utils/translate'
|
||||||
import { documentExts, imageExts, textExts } from '@shared/config/constant'
|
import { documentExts, imageExts, textExts } from '@shared/config/constant'
|
||||||
import { IpcChannel } from '@shared/IpcChannel'
|
import { IpcChannel } from '@shared/IpcChannel'
|
||||||
@ -567,6 +572,10 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
|||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
setIsFileDragging(false)
|
setIsFileDragging(false)
|
||||||
|
|
||||||
|
const data = await getTextFromDropEvent(e)
|
||||||
|
|
||||||
|
setText(text + data)
|
||||||
|
|
||||||
const files = await getFilesFromDropEvent(e).catch((err) => {
|
const files = await getFilesFromDropEvent(e).catch((err) => {
|
||||||
logger.error('handleDrop:', err)
|
logger.error('handleDrop:', err)
|
||||||
return null
|
return null
|
||||||
@ -591,7 +600,7 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[supportedExts, t]
|
[supportedExts, t, text]
|
||||||
)
|
)
|
||||||
|
|
||||||
const onTranslated = (translatedText: string) => {
|
const onTranslated = (translatedText: string) => {
|
||||||
|
|||||||
@ -5,6 +5,10 @@ import { FileMetadata } from '@renderer/types'
|
|||||||
|
|
||||||
const logger = loggerService.withContext('Utils:Input')
|
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[]> => {
|
export const getFilesFromDropEvent = async (e: React.DragEvent<HTMLDivElement>): Promise<FileMetadata[]> => {
|
||||||
if (e.dataTransfer.files.length > 0) {
|
if (e.dataTransfer.files.length > 0) {
|
||||||
// 使用新的API获取文件路径
|
// 使用新的API获取文件路径
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user