diff --git a/package-lock.json b/package-lock.json index 81f69041..178ca2ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@d-i-t-a/reader", - "version": "2.1.0-beta.1", + "version": "2.1.0-beta.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@d-i-t-a/reader", - "version": "2.1.0-beta.1", + "version": "2.1.0-beta.2", "license": "Apache-2.0", "dependencies": { "browserslist-useragent": "^3.0.3", diff --git a/package.json b/package.json index 4fa68d6b..61ec09a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@d-i-t-a/reader", - "version": "2.1.0-beta.1", + "version": "2.1.0-beta.2", "description": "A viewer application for EPUB files.", "repository": "https://github.com/d-i-t-a/R2D2BC", "license": "Apache-2.0", diff --git a/src/modules/TTS/TTSModule2.ts b/src/modules/TTS/TTSModule2.ts index 6c34fc69..9c0d89aa 100644 --- a/src/modules/TTS/TTSModule2.ts +++ b/src/modules/TTS/TTSModule2.ts @@ -287,7 +287,7 @@ export class TTSModule2 implements ReaderModule { var restOfTheText; if (ttsQueueItem && selectionInfo && selectionInfo.cleanText) { const sentence = getTtsQueueItemRefText(ttsQueueItem); - let startIndex = sentence.indexOf(selectionInfo.cleanText); + let startIndex = selectionInfo.rangeInfo.startOffset; let textToBeSpoken = selectionInfo.cleanText; if (ttsQueueItemEnd && idx + 1 === idxEnd) { @@ -301,14 +301,14 @@ export class TTSModule2 implements ReaderModule { .replace(textToBeSpoken, "") .trim(); } else if (idxEnd > idx) { - let mergedSentenses = ""; + let mergedSentences = ""; for (let i = idx + 1; i < idxEnd; i++) { const ttsQueueItemInBetween = getTtsQueueItemRef(ttsQueue, i); if (ttsQueueItemInBetween) { const sentenceInBetween = getTtsQueueItemRefText( ttsQueueItemInBetween ); - mergedSentenses += sentenceInBetween; + mergedSentences += sentenceInBetween; restOfTheText = selectionInfo.cleanText.replace( sentenceInBetween, "" @@ -318,9 +318,9 @@ export class TTSModule2 implements ReaderModule { if (ttsQueueItemEnd) { const sentenceEnd = getTtsQueueItemRefText(ttsQueueItemEnd); - mergedSentenses += " " + sentenceEnd; + mergedSentences += " " + sentenceEnd; } - startIndex = (sentence + " " + mergedSentenses).indexOf( + startIndex = (sentence + " " + mergedSentences).indexOf( selectionInfo.cleanText ); diff --git a/src/modules/highlight/TextHighlighter.ts b/src/modules/highlight/TextHighlighter.ts index a4df9803..33a5cf65 100644 --- a/src/modules/highlight/TextHighlighter.ts +++ b/src/modules/highlight/TextHighlighter.ts @@ -909,16 +909,20 @@ export class TextHighlighter { // Use short timeout to let the selection updated to 'finish', otherwise some // browsers can get wrong or incomplete selection data. - toolboxShowDelayed(ev: any) { - let self = this; - setTimeout(function () { - if (!self.isAndroid()) { - self.snapSelectionToWord(ev.detail === 1); - } - self.toolboxShow(); - }, 100); + toolboxShowDelayed(event: TouchEvent | MouseEvent) { + this.showTool(event.detail === 1); } + showTool = debounce( + (b: boolean) => { + if (!this.isAndroid()) { + this.snapSelectionToWord(b); + } + this.toolboxShow(); + }, + navigator.userAgent.toLowerCase().indexOf("firefox") > -1 ? 200 : 100 + ); + snapSelectionToWord(trimmed: boolean = false) { let self = this; let doc = this.delegate.iframes[0].contentDocument;