This commit is contained in:
Vanessa 2022-08-24 14:46:39 +08:00
parent 69460273e1
commit a7d0fefff1

View file

@ -20,6 +20,10 @@ import {Editor} from "../../editor";
import {blockRender} from "../markdown/blockRender";
import {processRender} from "./processCode";
import {highlightRender} from "../markdown/highlightRender";
import {uploadLocalFiles} from "../upload";
import {MenuItem} from "../../menus/Menu";
import {insertHTML} from "./insertHTML";
import {pathPosix} from "../../util/pathName";
const dragSb = (protyle: IProtyle, sourceElements: Element[], targetElement: Element, isBottom: boolean, direct: "col" | "row") => {
const isSameDoc = protyle.element.contains(sourceElements[0]);
@ -690,7 +694,42 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
} else if (!window.siyuan.dragElement && (event.dataTransfer.types[0] === "Files" || event.dataTransfer.types.includes("text/html"))) {
// 外部文件拖入编辑器中或者编辑器内选中文字拖拽
focusByRange(document.caretRangeFromPoint(event.clientX, event.clientY));
paste(protyle, event);
if (event.dataTransfer.types[0] === "Files") {
const files:string[] = []
let isAllFile = true
for (let i = 0; i < event.dataTransfer.files.length; i++) {
files.push(event.dataTransfer.files[i].path);
if (event.dataTransfer.files[i].type === "") {
isAllFile = false
}
}
if (isAllFile) {
window.siyuan.menus.menu.remove();
window.siyuan.menus.menu.append(new MenuItem({
label:window.siyuan.languages.upload,
icon:"iconUpload",
click(element) {
uploadLocalFiles(files, protyle);
}
}).element);
window.siyuan.menus.menu.append(new MenuItem({
label:window.siyuan.languages.link,
icon:"iconLink",
click(element) {
let fileText = ""
files.forEach((item) => {
fileText = `[${pathPosix().basename(item)}](${item})\n`
})
insertHTML(protyle.lute.SpinBlockDOM(fileText), protyle);
}
}).element);
window.siyuan.menus.menu.popup({x: event.clientX, y: event.clientY});
} else {
uploadLocalFiles(files, protyle);
}
} else {
paste(protyle, event);
}
}
if (window.siyuan.dragElement) {
window.siyuan.dragElement.style.opacity = "";