|
@@ -12,15 +12,16 @@ export const extractTextItems = async (
|
|
|
|
|
|
for (let j = 0, len = textContent.length; j < len; j += 1) {
|
|
|
// add whitespace in front if start character is Uppercase
|
|
|
- if (
|
|
|
- textContent[j].str.match(/^[A-Z]/) &&
|
|
|
- j > 0 &&
|
|
|
- textContent[j - 1].str !== ' '
|
|
|
- ) {
|
|
|
- strBuf.push(` ${textContent[j].str}`);
|
|
|
- } else {
|
|
|
- strBuf.push(textContent[j].str);
|
|
|
- }
|
|
|
+ strBuf.push(textContent[j].str);
|
|
|
+ // if (
|
|
|
+ // textContent[j].str.match(/^[A-Z]/) &&
|
|
|
+ // j > 0 &&
|
|
|
+ // textContent[j - 1].str !== ' '
|
|
|
+ // ) {
|
|
|
+ // strBuf.push(` ${textContent[j].str}`);
|
|
|
+ // } else {
|
|
|
+ // strBuf.push(textContent[j].str);
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
return strBuf;
|
|
@@ -79,13 +80,16 @@ const appendTextToDiv = async (
|
|
|
fromOffset: number,
|
|
|
toOffset: number | undefined,
|
|
|
highlight: boolean,
|
|
|
- id: string
|
|
|
+ id: string,
|
|
|
+ queryStr = ''
|
|
|
): Promise<any> => {
|
|
|
const textContentItem = await extractTextItems(getPage);
|
|
|
|
|
|
const domElement = domElements[divIdx];
|
|
|
const content = textContentItem[divIdx].substring(fromOffset, toOffset);
|
|
|
- const node = document.createTextNode(content);
|
|
|
+ const node = document.createTextNode(
|
|
|
+ queryStr ? content.replace(queryStr, '') : content
|
|
|
+ );
|
|
|
const span = document.createElement('span');
|
|
|
|
|
|
if (highlight) {
|
|
@@ -94,8 +98,6 @@ const appendTextToDiv = async (
|
|
|
span.appendChild(node);
|
|
|
domElement.appendChild(span);
|
|
|
} else {
|
|
|
- // eslint-disable-next-line no-param-reassign
|
|
|
- domElement.textContent = '';
|
|
|
domElement.appendChild(node);
|
|
|
}
|
|
|
};
|
|
@@ -103,7 +105,8 @@ const appendTextToDiv = async (
|
|
|
const beginText = async (
|
|
|
domElements: HTMLElement[],
|
|
|
getPage: () => Promise<any>,
|
|
|
- begin: Record<string, any>
|
|
|
+ begin: Record<string, any>,
|
|
|
+ queryStr: string
|
|
|
): Promise<any> => {
|
|
|
const { divIdx } = begin;
|
|
|
const domElement = domElements[divIdx];
|
|
@@ -111,7 +114,16 @@ const beginText = async (
|
|
|
if (domElement) {
|
|
|
// eslint-disable-next-line no-param-reassign
|
|
|
domElement.textContent = '';
|
|
|
- appendTextToDiv(domElements, getPage, divIdx, 0, begin.offset, false, '');
|
|
|
+ appendTextToDiv(
|
|
|
+ domElements,
|
|
|
+ getPage,
|
|
|
+ divIdx,
|
|
|
+ 0,
|
|
|
+ begin.offset,
|
|
|
+ false,
|
|
|
+ '',
|
|
|
+ queryStr
|
|
|
+ );
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -125,7 +137,7 @@ export const renderMatches = async (
|
|
|
const textContentItem = await extractTextItems(getPage);
|
|
|
const { begin, end } = convertMatches(queryStr, matchIndex, textContentItem);
|
|
|
|
|
|
- beginText(domElements, getPage, begin);
|
|
|
+ beginText(domElements, getPage, begin, queryStr);
|
|
|
|
|
|
if (begin.divIdx === end.divIdx) {
|
|
|
appendTextToDiv(
|
|
@@ -152,7 +164,12 @@ export const renderMatches = async (
|
|
|
);
|
|
|
break;
|
|
|
case end.divIdx:
|
|
|
- beginText(domElements, getPage, { divIdx: end.divIdx, offset: 0 });
|
|
|
+ beginText(
|
|
|
+ domElements,
|
|
|
+ getPage,
|
|
|
+ { divIdx: end.divIdx, offset: 0 },
|
|
|
+ queryStr
|
|
|
+ );
|
|
|
appendTextToDiv(
|
|
|
domElements,
|
|
|
getPage,
|
|
@@ -164,7 +181,7 @@ export const renderMatches = async (
|
|
|
);
|
|
|
break;
|
|
|
default: {
|
|
|
- beginText(domElements, getPage, { divIdx: i, offset: 0 });
|
|
|
+ beginText(domElements, getPage, { divIdx: i, offset: 0 }, queryStr);
|
|
|
appendTextToDiv(domElements, getPage, i, 0, undefined, true, id);
|
|
|
break;
|
|
|
}
|