From 160d9c3e1d12c73010ef95ad76699d57ba11bea6 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 8 Jul 2020 11:11:15 +0300 Subject: [PATCH 1/2] selection in single text node fix --- plugin.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/plugin.js b/plugin.js index 682a153..d888ca2 100644 --- a/plugin.js +++ b/plugin.js @@ -36,15 +36,23 @@ CKEDITOR.plugins.add('texttransform', nodeText = node.$.textContent; - if (node.equals(range.startContainer)) { - - nodeText = nodeText.substr(0, range.startOffset) + - transformFunc(nodeText.substr(range.startOffset)); - } - else if (node.equals(range.endContainer)) { - - nodeText = transformFunc(nodeText.substr(0, range.endOffset)) + - nodeText.substr(range.endOffset); + if (node.equals(range.startContainer) || node.equals(range.endContainer)) { + if (node.equals(range.startContainer) && node.equals(range.endContainer)) { + var textLength = range.endOffset - range.startOffset; + nodeText = nodeText.substr(0, range.startOffset) + + transformFunc(nodeText.substr(range.startOffset, textLength)) + + nodeText.substr(range.endOffset); + } else { + if (node.equals(range.startContainer)) { + nodeText = nodeText.substr(0, range.startOffset) + + transformFunc(nodeText.substr(range.startOffset)); + } + else if (node.equals(range.endContainer)) { + + nodeText = transformFunc(nodeText.substr(0, range.endOffset)) + + nodeText.substr(range.endOffset); + } + } } else { From 4273713217e0de003c7f6a7a9b84f0f52a50208c Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 8 Jul 2020 11:20:27 +0300 Subject: [PATCH 2/2] code review --- plugin.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/plugin.js b/plugin.js index d888ca2..02c52e1 100644 --- a/plugin.js +++ b/plugin.js @@ -36,23 +36,24 @@ CKEDITOR.plugins.add('texttransform', nodeText = node.$.textContent; - if (node.equals(range.startContainer) || node.equals(range.endContainer)) { - if (node.equals(range.startContainer) && node.equals(range.endContainer)) { - var textLength = range.endOffset - range.startOffset; - nodeText = nodeText.substr(0, range.startOffset) + - transformFunc(nodeText.substr(range.startOffset, textLength)) + - nodeText.substr(range.endOffset); - } else { - if (node.equals(range.startContainer)) { - nodeText = nodeText.substr(0, range.startOffset) + - transformFunc(nodeText.substr(range.startOffset)); - } - else if (node.equals(range.endContainer)) { - - nodeText = transformFunc(nodeText.substr(0, range.endOffset)) + - nodeText.substr(range.endOffset); - } - } + if (node.equals(range.startContainer) && node.equals(range.endContainer)) { // fix for selection in plain text + var textLength = range.endOffset - range.startOffset; + nodeText = nodeText.substr(0, range.startOffset) + + transformFunc(nodeText.substr(range.startOffset, textLength)) + + nodeText.substr(range.endOffset); + node.$.textContent = nodeText; + continue; + } + + if (node.equals(range.startContainer)) { + + nodeText = nodeText.substr(0, range.startOffset) + + transformFunc(nodeText.substr(range.startOffset)); + } + else if (node.equals(range.endContainer)) { + + nodeText = transformFunc(nodeText.substr(0, range.endOffset)) + + nodeText.substr(range.endOffset); } else {