diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/markdown.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/markdown.js index c4d7bf26d..6a6c9eb69 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/markdown.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/markdown.js @@ -27,6 +27,12 @@ reader.readAsDataURL(file); } + function file2Text(file,cb) { + file.arrayBuffer().then(d => { + cb( new TextDecoder().decode(d) ) + }).catch(ex => { cb(`error: ${ex}`) }) + } + var initialized = false; var currentEditor = null; /** @@ -52,7 +58,8 @@ if (files.length === 1) { var file = files[0]; var name = file.name.toLowerCase(); - + var fileType = file.type.toLowerCase(); + if (name.match(/\.(apng|avif|gif|jpeg|png|svg|webp)$/)) { file2base64Image(file, function (image) { var session = currentEditor.getSession(); @@ -63,7 +70,30 @@ }); return; } + + if ( fileType.startsWith("text/") ) { + file2Text(file, function (txt) { + var session = currentEditor.getSession(); + var pos = session.getCursorPosition(); + session.insert(pos, txt); + $("#red-ui-image-drop-target").hide(); + }); + return; + } + } + } else if ($.inArray("text/plain", ev.originalEvent.dataTransfer.types) != -1) { + let item = Object.values(ev.originalEvent.dataTransfer.items).filter(d => d.type == "text/plain")[0] + + if (item) { + item.getAsString(txt => { + var session = currentEditor.getSession(); + var pos = session.getCursorPosition(); + session.insert(pos, txt); + $("#red-ui-image-drop-target").hide(); + }) + return + } } $("#red-ui-image-drop-target").hide(); });