diff --git a/client/components/Reader/TextPage/DrawHelper.js b/client/components/Reader/TextPage/DrawHelper.js
index f7a36343..acc14c42 100644
--- a/client/components/Reader/TextPage/DrawHelper.js
+++ b/client/components/Reader/TextPage/DrawHelper.js
@@ -47,16 +47,46 @@ export default class DrawHelper {
text: String,
}
}*/
+ let sel = new Set();
+ if (i == 0 && this.searching) {
+ let pureText = '';
+ for (const part of line.parts) {
+ pureText += part.text;
+ }
+
+ pureText = pureText.toLowerCase();
+ let j = 0;
+ while (1) {// eslint-disable-line no-constant-condition
+ j = pureText.indexOf(this.needle, j);
+ if (j >= 0) {
+ for (let k = 0; k < this.needle.length; k++) {
+ sel.add(j + k);
+ }
+ } else
+ break;
+ j++;
+ }
+ }
let lineText = '';
let center = false;
+ let j = 0;
for (const part of line.parts) {
let tOpen = (part.style.bold ? '' : '');
tOpen += (part.style.italic ? '' : '');
let tClose = (part.style.italic ? '' : '');
tClose += (part.style.bold ? '' : '');
- lineText += `${tOpen}${part.text}${tClose}`;
+ let text = '';
+ if (i == 0 && this.searching) {
+ for (let k = 0; k < part.text.length; k++) {
+ text += (sel.has(j) ? `${part.text[k]}` : part.text[k]);
+ j++;
+ }
+ } else
+ text = part.text;
+
+ lineText += `${tOpen}${text}${tClose}`;
center = center || part.style.center;
}
diff --git a/client/components/Reader/TextPage/TextPage.vue b/client/components/Reader/TextPage/TextPage.vue
index 52f0f458..ffbb440c 100644
--- a/client/components/Reader/TextPage/TextPage.vue
+++ b/client/components/Reader/TextPage/TextPage.vue
@@ -436,15 +436,7 @@ class TextPage extends Vue {
}
startSearch(needle) {
- this.drawHelper.needle = '';
- const words = needle.split(' ');
- for (const word of words) {
- if (word != '') {
- this.drawHelper.needle = word;
- break;
- }
- }
-
+ this.drawHelper.needle = needle;
this.drawHelper.searching = true;
this.draw();
}