Skip to content

Commit 6c493ed

Browse files
authored
Merge pull request #177 from dmitri-gb/fix-findRangeFromNodeList
Fix findRangeFromNodeList
2 parents acb582b + c63394f commit 6c493ed

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/text-fragment-utils.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -762,19 +762,24 @@ const findTextInRange = (query, range) => {
762762
*/
763763
const findRangeFromNodeList = (query, range, textNodes, segmenter) => {
764764
if (!query || !range || !(textNodes || []).length) return undefined;
765-
const data = normalizeString(getTextContent(textNodes, 0, undefined));
766-
const normalizedQuery = normalizeString(query);
767-
let searchStart =
765+
const startOffset =
768766
textNodes[0] === range.startContainer ? range.startOffset : 0;
767+
const data =
768+
normalizeString(getTextContent(textNodes, startOffset, undefined));
769+
const normalizedQuery = normalizeString(query);
770+
let searchStart = 0;
769771
let start;
770772
let end;
771773
while (searchStart < data.length) {
772774
const matchIndex = data.indexOf(normalizedQuery, searchStart);
773775
if (matchIndex === -1) return undefined;
774776
if (isWordBounded(data, matchIndex, normalizedQuery.length, segmenter)) {
775-
start = getBoundaryPointAtIndex(matchIndex, textNodes, /* isEnd=*/ false);
777+
const normalizedStartOffset =
778+
normalizeString(textNodes[0].data.slice(0, startOffset)).length;
779+
start = getBoundaryPointAtIndex(
780+
normalizedStartOffset + matchIndex, textNodes, /* isEnd=*/ false);
776781
end = getBoundaryPointAtIndex(
777-
matchIndex + normalizedQuery.length,
782+
normalizedStartOffset + matchIndex + normalizedQuery.length,
778783
textNodes,
779784
/* isEnd=*/ true,
780785
);

0 commit comments

Comments
 (0)