@@ -762,19 +762,24 @@ const findTextInRange = (query, range) => {
762762 */
763763const 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