aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/mixed/js/display.js104
1 files changed, 50 insertions, 54 deletions
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js
index 40febadc..ab0f59a5 100644
--- a/ext/mixed/js/display.js
+++ b/ext/mixed/js/display.js
@@ -521,78 +521,74 @@ class Display extends EventDispatcher {
_onGlossaryMouseUp(e) {
if (!this._clickScanPrevent && DOM.isMouseButtonPressed(e, 'primary')) {
- this._onTermLookup(e);
+ try {
+ this._onTermLookup(e);
+ } catch (error) {
+ this.onError(error);
+ }
}
}
async _onTermLookup(e) {
- try {
- if (!this._historyHasState()) { return; }
+ if (!this._historyHasState()) { return; }
- const termLookupResults = await this._termLookup(e);
- if (!termLookupResults || !this._historyHasState()) { return; }
+ const termLookupResults = await this._termLookup(e);
+ if (!termLookupResults || !this._historyHasState()) { return; }
- const {state} = this._history;
- const {textSource, definitions} = termLookupResults;
+ const {state} = this._history;
+ const {textSource, definitions} = termLookupResults;
- const scannedElement = e.target;
- const sentenceExtent = this._options.anki.sentenceExt;
- const layoutAwareScan = this._options.scanning.layoutAwareScan;
- const sentence = docSentenceExtract(textSource, sentenceExtent, layoutAwareScan);
+ const scannedElement = e.target;
+ const sentenceExtent = this._options.anki.sentenceExt;
+ const layoutAwareScan = this._options.scanning.layoutAwareScan;
+ const sentence = docSentenceExtract(textSource, sentenceExtent, layoutAwareScan);
- state.focusEntry = this._entryIndexFind(scannedElement);
- state.scrollX = this._windowScroll.x;
- state.scrollY = this._windowScroll.y;
- this._historyStateUpdate(state);
+ state.focusEntry = this._entryIndexFind(scannedElement);
+ state.scrollX = this._windowScroll.x;
+ state.scrollY = this._windowScroll.y;
+ this._historyStateUpdate(state);
- const query = textSource.text();
- const details = {
- focus: false,
- history: true,
- params: this._createSearchParams('terms', query, false),
- state: {
- focusEntry: 0,
- sentence,
- url: state.url
- },
- content: {
- definitions
- }
- };
- this.setContent(details);
- } catch (error) {
- this.onError(error);
- }
+ const query = textSource.text();
+ const details = {
+ focus: false,
+ history: true,
+ params: this._createSearchParams('terms', query, false),
+ state: {
+ focusEntry: 0,
+ sentence,
+ url: state.url
+ },
+ content: {
+ definitions
+ }
+ };
+ this.setContent(details);
}
async _termLookup(e) {
- try {
- e.preventDefault();
-
- const {length: scanLength, deepDomScan: deepScan, layoutAwareScan} = this._options.scanning;
- const textSource = docRangeFromPoint(e.clientX, e.clientY, deepScan);
- if (textSource === null) {
- return false;
- }
+ e.preventDefault();
- let definitions, length;
- try {
- textSource.setEndOffset(scanLength, layoutAwareScan);
+ const {length: scanLength, deepDomScan: deepScan, layoutAwareScan} = this._options.scanning;
+ const textSource = docRangeFromPoint(e.clientX, e.clientY, deepScan);
+ if (textSource === null) {
+ return false;
+ }
- ({definitions, length} = await api.termsFind(textSource.text(), {}, this.getOptionsContext()));
- if (definitions.length === 0) {
- return false;
- }
+ let definitions, length;
+ try {
+ textSource.setEndOffset(scanLength, layoutAwareScan);
- textSource.setEndOffset(length, layoutAwareScan);
- } finally {
- textSource.cleanup();
+ ({definitions, length} = await api.termsFind(textSource.text(), {}, this.getOptionsContext()));
+ if (definitions.length === 0) {
+ return false;
}
- return {textSource, definitions};
- } catch (error) {
- this.onError(error);
+ textSource.setEndOffset(length, layoutAwareScan);
+ } finally {
+ textSource.cleanup();
}
+
+ return {textSource, definitions};
}
_onAudioPlay(e) {