From e0631f74d1a62cb1557236364a5fc80ccb6d65a6 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Wed, 2 Aug 2017 12:08:48 -0300 Subject: [PATCH] Remove markdown on toolbar click --- .../client/messageBox.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/packages/rocketchat-ui-message/client/messageBox.js b/packages/rocketchat-ui-message/client/messageBox.js index 4dd00c229ed..6cde0701fa2 100644 --- a/packages/rocketchat-ui-message/client/messageBox.js +++ b/packages/rocketchat-ui-message/client/messageBox.js @@ -35,6 +35,37 @@ function applyMd(e, t) { }, 100); } box.focus(); + + // removes markdown if selected text in inside the same clicked markdown + if (selectionStart !== selectionEnd) { + const startPattern = this.pattern.substr(0, this.pattern.indexOf('{{text}}')); + const startPatternFound = [...startPattern].reverse().every((char, index) => { + return box.value.substr(selectionStart - index - 1, 1) === char; + }); + + if (startPatternFound) { + const endPattern = this.pattern.substr(this.pattern.indexOf('{{text}}') + '{{text}}'.length); + const endPatternFound = [...endPattern].every((char, index) => { + return box.value.substr(selectionEnd + index, 1) === char; + }); + + if (endPatternFound) { + box.selectionStart = selectionStart - startPattern.length; + box.selectionEnd = selectionEnd + endPattern.length; + + if (document.execCommand) { + document.execCommand('insertText', false, selectedText); + } else { + box.value = initText.substr(0, initText.length - startPattern.length) + selectedText + finalText.substr(endPattern.length); + } + box.selectionStart = selectionStart - startPattern.length; + box.selectionEnd = box.selectionStart + selectedText.length; + $(box).change(); + return; + } + } + } + /* get text apply pattern