From a66df4950cc772b77967fc12437ea0f5b4240fa4 Mon Sep 17 00:00:00 2001 From: Rainer Simon Date: Thu, 14 May 2020 10:22:46 +0200 Subject: [PATCH] Closes #8 --- src/selection/SelectionHandler.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/selection/SelectionHandler.js b/src/selection/SelectionHandler.js index b3f29d7..96c2d15 100644 --- a/src/selection/SelectionHandler.js +++ b/src/selection/SelectionHandler.js @@ -49,17 +49,23 @@ export default class SelectionHandler extends EventEmitter { } } else { const selectedRange = trimRange(selection.getRangeAt(0)); - const stub = rangeToSelection(selectedRange, this.el); - const spans = this.highlighter.wrapRange(selectedRange); - spans.forEach(span => span.className = 'r6o-selection'); + // Make sure the selection is entirely inside this.el + const { commonAncestorContainer } = selectedRange; - this._clearNativeSelection(); + if (this.el.contains(commonAncestorContainer)) { + const stub = rangeToSelection(selectedRange, this.el); - this.emit('select', { - selection: stub, - element: selectedRange - }); + const spans = this.highlighter.wrapRange(selectedRange); + spans.forEach(span => span.className = 'r6o-selection'); + + this._clearNativeSelection(); + + this.emit('select', { + selection: stub, + element: selectedRange + }); + } } } }