From 0ee9e5c4dbf2d3ffa8b81242187d63231cfc7c02 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 15 May 2019 20:23:09 +0100 Subject: [PATCH] Updated both editors to ignore image paste if text data apparent Designed to ignore image data when copying from a spreadsheet. Fixes #987 --- .../assets/js/components/markdown-editor.js | 17 ++++++++++++++--- .../assets/js/components/wysiwyg-editor.js | 17 +++++++++++++---- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/resources/assets/js/components/markdown-editor.js b/resources/assets/js/components/markdown-editor.js index 770b4af50..5fa16ef6e 100644 --- a/resources/assets/js/components/markdown-editor.js +++ b/resources/assets/js/components/markdown-editor.js @@ -180,9 +180,20 @@ class MarkdownEditor { // Handle image paste cm.on('paste', (cm, event) => { - if (!event.clipboardData || !event.clipboardData.items) return; - for (let i = 0; i < event.clipboardData.items.length; i++) { - uploadImage(event.clipboardData.items[i].getAsFile()); + const clipboardItems = event.clipboardData.items; + if (!event.clipboardData || !clipboardItems) return; + + // Don't handle if clipboard includes text content + for (let clipboardItem of clipboardItems) { + if (clipboardItem.type.includes('text/')) { + return; + } + } + + for (let clipboardItem of clipboardItems) { + if (clipboardItem.type.includes("image")) { + uploadImage(clipboardItem.getAsFile()); + } } }); diff --git a/resources/assets/js/components/wysiwyg-editor.js b/resources/assets/js/components/wysiwyg-editor.js index 46fe967e0..614cfb80f 100644 --- a/resources/assets/js/components/wysiwyg-editor.js +++ b/resources/assets/js/components/wysiwyg-editor.js @@ -8,11 +8,20 @@ import DrawIO from "../services/drawio"; * @param editor */ function editorPaste(event, editor, wysiwygComponent) { - if (!event.clipboardData || !event.clipboardData.items) return; + const clipboardItems = event.clipboardData.items; + if (!event.clipboardData || !clipboardItems) return; - for (let clipboardItem of event.clipboardData.items) { - if (clipboardItem.type.indexOf("image") === -1) continue; - event.preventDefault(); + // Don't handle if clipboard includes text content + for (let clipboardItem of clipboardItems) { + if (clipboardItem.type.includes('text/')) { + return; + } + } + + for (let clipboardItem of clipboardItems) { + if (!clipboardItem.type.includes("image")) { + continue; + } const id = "image-" + Math.random().toString(16).slice(2); const loadingImage = window.baseUrl('/loading.gif');