From 9e0ede3048f1cfdb1a107394858a701c03d2f5ab Mon Sep 17 00:00:00 2001 From: Conan Li <40572164+ConanJordan@users.noreply.github.com> Date: Mon, 16 May 2022 18:18:17 +0800 Subject: [PATCH] Paste (#1231) * update fixBrowserBehavior.ts: Get base64 content of a file ont PASTE event via FileReader. Not reflected into EDITOR yet. * update fixBrowserBehavior.ts: Get base64 content of a file ont PASTE event via FileReader. And reflect it in the EDITOR and HTML PREVIWER. * update fixBrowserBehavior.ts: Add target file name as TITTLE of IMAGE. Co-authored-by: ConanJordan <1042583309@qq.com> --- src/ts/util/fixBrowserBehavior.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/ts/util/fixBrowserBehavior.ts b/src/ts/util/fixBrowserBehavior.ts index 7cffd5eaa..610402646 100644 --- a/src/ts/util/fixBrowserBehavior.ts +++ b/src/ts/util/fixBrowserBehavior.ts @@ -1260,6 +1260,7 @@ export const paste = async (vditor: IVditor, event: (ClipboardEvent | DragEvent) let textHTML; let textPlain; let files; + if ("clipboardData" in event) { textHTML = event.clipboardData.getData("text/html"); textPlain = event.clipboardData.getData("text/plain"); @@ -1415,6 +1416,28 @@ export const paste = async (vditor: IVditor, event: (ClipboardEvent | DragEvent) vditor.outline.render(vditor); } else if (files.length > 0 && (vditor.options.upload.url || vditor.options.upload.handler)) { await uploadFiles(vditor, files); + } else if (files.length > 0 && (!vditor.options.upload.url || !vditor.options.upload.handler)) { + var fileReader = new FileReader(); + var file: File; + if ("clipboardData" in event) { + files = event.clipboardData.files; + file = files[0]; + } else { + if (event.dataTransfer.types.includes("Files")) { + files = event.dataTransfer.items; + file = files[0].getAsFile(); + } + } + fileReader.readAsDataURL(file); + fileReader.onload = function() { + // Get the base64 format content of target file. + var result = fileReader.result; + //console.log("This is an image.", result); + // Image in Markdown:![title or file name](dataurl) + // Put it in a newline. + var png = "\r![" + file.name + "](" + result.toString() + ")\r"; + insertHTML(vditor.lute.Md2VditorIRDOM(png), vditor); + } } else if (textPlain.trim() !== "" && files.length === 0) { if (vditor.currentMode === "ir") { renderers.Md2VditorIRDOM = {renderLinkDest};