summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorsiikamiika <siikamiika@users.noreply.github.com>2019-08-03 15:06:28 +0300
committersiikamiika <siikamiika@users.noreply.github.com>2019-08-03 15:06:28 +0300
commitafc771de9fd34a7b16a6bbf8bcdc85dd758d7836 (patch)
tree7651eab807019c1e5de83f1f05c505534bc819d4 /ext
parent0ee6d05cb15a8bc94f120c2896e7537fd969aaed (diff)
inject doc functions as dependencies
Diffstat (limited to 'ext')
-rw-r--r--ext/bg/js/search.js2
-rw-r--r--ext/fg/js/float.js37
-rw-r--r--ext/mixed/js/display.js39
3 files changed, 43 insertions, 35 deletions
diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js
index 40bf2019..f08f22da 100644
--- a/ext/bg/js/search.js
+++ b/ext/bg/js/search.js
@@ -25,6 +25,8 @@ class DisplaySearch extends Display {
this.query = $('#query').on('input', this.onSearchInput.bind(this));
this.intro = $('#intro');
+ this.dependencies = {...this.dependencies, ...{docRangeFromPoint, docSentenceExtract}};
+
window.wanakana.bind(this.query.get(0));
}
diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js
index 65ed89a1..090839a1 100644
--- a/ext/fg/js/float.js
+++ b/ext/fg/js/float.js
@@ -23,6 +23,8 @@ class DisplayFloat extends Display {
this.autoPlayAudioTimer = null;
this.styleNode = null;
+ this.dependencies = {...this.dependencies, ...{docRangeFromPoint, docSentenceExtract}};
+
$(window).on('message', utilAsync(this.onMessage.bind(this)));
}
@@ -123,41 +125,6 @@ class DisplayFloat extends Display {
parent.appendChild(this.styleNode);
}
}
-
- async onTermLookup(e) {
- try {
- e.preventDefault();
-
- const clickedElement = $(e.target);
- const textSource = docRangeFromPoint({x: e.clientX, y: e.clientY});
- textSource.setEndOffset(this.options.scanning.length);
-
- const {definitions, length} = await apiTermsFind(textSource.text());
- if (definitions.length === 0) {
- return false;
- }
-
- textSource.setEndOffset(length);
-
- const sentence = docSentenceExtract(textSource, this.options.anki.sentenceExt);
-
- const context = {
- source: {
- definitions: this.definitions,
- index: Display.entryIndexFind(clickedElement)
- }
- };
-
- if (this.context) {
- context.sentence = sentence;
- context.url = this.context.url;
- }
-
- this.termsShow(definitions, this.options, context);
- } catch (e) {
- this.onError(e);
- }
- }
}
window.yomichan_display = new DisplayFloat();
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js
index dc6f5798..0067d457 100644
--- a/ext/mixed/js/display.js
+++ b/ext/mixed/js/display.js
@@ -28,6 +28,8 @@ class Display {
this.index = 0;
this.audioCache = {};
+ this.dependencies = {};
+
$(document).keydown(this.onKeyDown.bind(this));
$(document).on('wheel', this.onWheel.bind(this));
}
@@ -69,6 +71,43 @@ class Display {
}
}
+ async onTermLookup(e) {
+ try {
+ e.preventDefault();
+
+ const {docRangeFromPoint, docSentenceExtract} = this.dependencies;
+
+ const clickedElement = $(e.target);
+ const textSource = docRangeFromPoint({x: e.clientX, y: e.clientY});
+ textSource.setEndOffset(this.options.scanning.length);
+
+ const {definitions, length} = await apiTermsFind(textSource.text());
+ if (definitions.length === 0) {
+ return false;
+ }
+
+ textSource.setEndOffset(length);
+
+ const sentence = docSentenceExtract(textSource, this.options.anki.sentenceExt);
+
+ const context = {
+ source: {
+ definitions: this.definitions,
+ index: Display.entryIndexFind(clickedElement)
+ }
+ };
+
+ if (this.context) {
+ context.sentence = sentence;
+ context.url = this.context.url;
+ }
+
+ this.termsShow(definitions, this.options, context);
+ } catch (e) {
+ this.onError(e);
+ }
+ }
+
onAudioPlay(e) {
e.preventDefault();
const link = $(e.currentTarget);