diff --git a/app/assets/javascripts/discourse/components/composer-editor.js.es6 b/app/assets/javascripts/discourse/components/composer-editor.js.es6 index 065a92db77e..468cbaf0f47 100644 --- a/app/assets/javascripts/discourse/components/composer-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-editor.js.es6 @@ -396,10 +396,10 @@ export default Ember.Component.extend({ }); $element.on('fileuploadpaste', (e) => { - const clipboard = clipboardData(e); + const { types } = clipboardData(e); this._pasted = true; - if (clipboard.types.some(t => t === "text/plain")) { + if (types.includes("text/plain")) { e.preventDefault(); } }); diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index 78731bef8fe..8249fd065dd 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -640,7 +640,7 @@ export default Ember.Component.extend({ }, paste(e) { - const clipboard = clipboardData(e); + const { clipboard, types } = clipboardData(e); const placeholder = `${ I18n.t('pasting') }`; let plainText = clipboard.getData("text/plain"); const html = clipboard.getData("text/html"); @@ -675,7 +675,7 @@ export default Ember.Component.extend({ }); } - const uploadFiles = clipboard.types.includes("Files") && !plainText && !html; + const uploadFiles = types.includes("Files") && !plainText && !html; if (handled || uploadFiles) { e.preventDefault(); diff --git a/app/assets/javascripts/discourse/lib/utilities.js.es6 b/app/assets/javascripts/discourse/lib/utilities.js.es6 index 1c77f17197a..15976a4be82 100644 --- a/app/assets/javascripts/discourse/lib/utilities.js.es6 +++ b/app/assets/javascripts/discourse/lib/utilities.js.es6 @@ -422,9 +422,17 @@ export function isAppleDevice() { } export function clipboardData(e) { - return e.clipboardData || - e.originalEvent.clipboardData || - e.delegatedEvent.originalEvent.clipboardData; + const clipboard = e.clipboardData || + e.originalEvent.clipboardData || + e.delegatedEvent.originalEvent.clipboardData; + + let types = clipboard.types; + + if (typeof types !== "array") { + types = Array.from(types); + } + + return { clipboard: clipboard, types: types }; } // This prevents a mini racer crash