From 99d26c44e0c9ef373998503191386ad220532b45 Mon Sep 17 00:00:00 2001 From: Gnome Ann <> Date: Wed, 13 Oct 2021 12:43:45 -0400 Subject: [PATCH] Handle CRLF newlines properly when pasting --- static/application.js | 6 +++--- templates/index.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/static/application.js b/static/application.js index 374cdf25..2e633aa4 100644 --- a/static/application.js +++ b/static/application.js @@ -758,7 +758,7 @@ function chunkOnTextInput(event) { // mobile devices, but the other method is also here as // a fallback if(document.queryCommandSupported && document.execCommand && document.queryCommandSupported('insertHTML')) { - document.execCommand('insertHTML', false, event.originalEvent.data.slice(0, -1).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\n/g, '
') + '
|'); + document.execCommand('insertHTML', false, event.originalEvent.data.slice(0, -1).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/(?=\r|\n)\r?\n?/g, '
') + '
|'); var t = $('#_EDITOR_SENTINEL_').contents().filter(function() { return this.nodeType === 3; })[0]; } else { var t = document.createTextNode('|'); @@ -1043,13 +1043,13 @@ function chunkOnPaste(event) { // paste as plaintext if(event.originalEvent.clipboardData && document.queryCommandSupported && document.execCommand && document.queryCommandSupported('insertText')) { event.preventDefault(); - document.execCommand('insertHTML', false, event.originalEvent.clipboardData.getData('text/plain').replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\n/g, '
')); + document.execCommand('insertHTML', false, event.originalEvent.clipboardData.getData('text/plain').replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/(?=\r|\n)\r?\n?/g, '
')); } else if (event.originalEvent.clipboardData) { event.preventDefault(); var s = getSelection(); // WARNING: Do not use rangy.getSelection() instead of getSelection() var r = s.getRangeAt(0); r.deleteContents(); - var nodes = Array.from($('' + event.originalEvent.clipboardData.getData('text/plain').replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\n/g, '
') + '
')[0].childNodes); + var nodes = Array.from($('' + event.originalEvent.clipboardData.getData('text/plain').replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/(?=\r|\n)\r?\n?/g, '
') + '
')[0].childNodes); for(var i = 0; i < nodes.length; i++) { r.insertNode(nodes[i]); r.collapse(false); diff --git a/templates/index.html b/templates/index.html index 6b774699..0f4d654e 100644 --- a/templates/index.html +++ b/templates/index.html @@ -6,7 +6,7 @@ - +