fix: paste elements boundary error

pr675
Hufe921 2 years ago
parent ed9cb53ad8
commit 34d59bbb58

@ -3,7 +3,11 @@ import { VIRTUAL_ELEMENT_TYPE } from '../../../dataset/constant/Element'
import { ElementType } from '../../../dataset/enum/Element' import { ElementType } from '../../../dataset/enum/Element'
import { IElement } from '../../../interface/Element' import { IElement } from '../../../interface/Element'
import { IPasteOption } from '../../../interface/Event' import { IPasteOption } from '../../../interface/Event'
import { getClipboardData, removeClipboardData } from '../../../utils/clipboard' import {
getClipboardData,
getIsClipboardContainFile,
removeClipboardData
} from '../../../utils/clipboard'
import { import {
formatElementContext, formatElementContext,
getElementListByHTML getElementListByHTML
@ -104,12 +108,14 @@ export function pasteByEvent(host: CanvasEvent, evt: ClipboardEvent) {
paste(evt) paste(evt)
return return
} }
// 优先读取编辑器内部粘贴板数据 // 优先读取编辑器内部粘贴板数据(粘贴板不包含文件时)
const clipboardText = clipboardData.getData('text') if (!getIsClipboardContainFile(clipboardData)) {
const editorClipboardData = getClipboardData() const clipboardText = clipboardData.getData('text')
if (clipboardText === editorClipboardData?.text) { const editorClipboardData = getClipboardData()
pasteElement(host, editorClipboardData.elementList) if (clipboardText === editorClipboardData?.text) {
return pasteElement(host, editorClipboardData.elementList)
return
}
} }
removeClipboardData() removeClipboardData()
// 从粘贴板提取数据 // 从粘贴板提取数据

@ -79,3 +79,15 @@ export function writeElementList(
if (!text && !html && !elementList.length) return if (!text && !html && !elementList.length) return
writeClipboardItem(text, html, zipElementList(elementList)) writeClipboardItem(text, html, zipElementList(elementList))
} }
export function getIsClipboardContainFile(clipboardData: DataTransfer) {
let isFile = false
for (let i = 0; i < clipboardData.items.length; i++) {
const item = clipboardData.items[i]
if (item.kind === 'file') {
isFile = true
break
}
}
return isFile
}

Loading…
Cancel
Save