inject doc functions as dependencies
This commit is contained in:
parent
0ee6d05cb1
commit
afc771de9f
@ -25,6 +25,8 @@ class DisplaySearch extends Display {
|
|||||||
this.query = $('#query').on('input', this.onSearchInput.bind(this));
|
this.query = $('#query').on('input', this.onSearchInput.bind(this));
|
||||||
this.intro = $('#intro');
|
this.intro = $('#intro');
|
||||||
|
|
||||||
|
this.dependencies = {...this.dependencies, ...{docRangeFromPoint, docSentenceExtract}};
|
||||||
|
|
||||||
window.wanakana.bind(this.query.get(0));
|
window.wanakana.bind(this.query.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@ class DisplayFloat extends Display {
|
|||||||
this.autoPlayAudioTimer = null;
|
this.autoPlayAudioTimer = null;
|
||||||
this.styleNode = null;
|
this.styleNode = null;
|
||||||
|
|
||||||
|
this.dependencies = {...this.dependencies, ...{docRangeFromPoint, docSentenceExtract}};
|
||||||
|
|
||||||
$(window).on('message', utilAsync(this.onMessage.bind(this)));
|
$(window).on('message', utilAsync(this.onMessage.bind(this)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,41 +125,6 @@ class DisplayFloat extends Display {
|
|||||||
parent.appendChild(this.styleNode);
|
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();
|
window.yomichan_display = new DisplayFloat();
|
||||||
|
@ -28,6 +28,8 @@ class Display {
|
|||||||
this.index = 0;
|
this.index = 0;
|
||||||
this.audioCache = {};
|
this.audioCache = {};
|
||||||
|
|
||||||
|
this.dependencies = {};
|
||||||
|
|
||||||
$(document).keydown(this.onKeyDown.bind(this));
|
$(document).keydown(this.onKeyDown.bind(this));
|
||||||
$(document).on('wheel', this.onWheel.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) {
|
onAudioPlay(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const link = $(e.currentTarget);
|
const link = $(e.currentTarget);
|
||||||
|
Loading…
Reference in New Issue
Block a user