diff options
Diffstat (limited to 'ext/bg/js')
-rw-r--r-- | ext/bg/js/query-parser-generator.js (renamed from ext/bg/js/search-query-parser-generator.js) | 0 | ||||
-rw-r--r-- | ext/bg/js/query-parser.js (renamed from ext/bg/js/search-query-parser.js) | 21 | ||||
-rw-r--r-- | ext/bg/js/search.js | 16 |
3 files changed, 27 insertions, 10 deletions
diff --git a/ext/bg/js/search-query-parser-generator.js b/ext/bg/js/query-parser-generator.js index 6989e157..6989e157 100644 --- a/ext/bg/js/search-query-parser-generator.js +++ b/ext/bg/js/query-parser-generator.js diff --git a/ext/bg/js/search-query-parser.js b/ext/bg/js/query-parser.js index 86524b66..88c40c93 100644 --- a/ext/bg/js/search-query-parser.js +++ b/ext/bg/js/query-parser.js @@ -22,11 +22,11 @@ * docSentenceExtract */ -class QueryParser { - constructor({getOptionsContext, setContent, setSpinnerVisible}) { +class QueryParser extends EventDispatcher { + constructor({getOptionsContext, setSpinnerVisible}) { + super(); this._options = null; this._getOptionsContext = getOptionsContext; - this._setContent = setContent; this._setSpinnerVisible = setSpinnerVisible; this._parseResults = []; this._queryParser = document.querySelector('#query-parser-content'); @@ -80,7 +80,8 @@ class QueryParser { const searchText = this._textScanner.getTextSourceContent(textSource, scanLength, layoutAwareScan); if (searchText.length === 0) { return null; } - const {definitions, length} = await api.termsFind(searchText, {}, this._getOptionsContext()); + const optionsContext = this._getOptionsContext(); + const {definitions, length} = await api.termsFind(searchText, {}, optionsContext); if (definitions.length === 0) { return null; } const sentenceExtent = this._options.anki.sentenceExt; @@ -88,12 +89,14 @@ class QueryParser { textSource.setEndOffset(length, layoutAwareScan); - this._setContent('terms', {definitions, context: { - focus: false, - disableHistory: cause === 'mouse', + this.trigger('searched', { + type: 'terms', + definitions, sentence, - url: window.location.href - }}); + cause, + textSource, + optionsContext + }); return {definitions, type: 'terms'}; } diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index 5be71555..b3e3ebca 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -40,7 +40,6 @@ class DisplaySearch extends Display { }); this._queryParser = new QueryParser({ getOptionsContext: this.getOptionsContext.bind(this), - setContent: this.setContent.bind(this), setSpinnerVisible: this.setSpinnerVisible.bind(this) }); this._onKeyDownIgnoreKeys = new Map([ @@ -67,6 +66,9 @@ class DisplaySearch extends Display { await this.updateOptions(); yomichan.on('optionsUpdated', () => this.updateOptions()); await this._queryParser.prepare(); + + this._queryParser.on('searched', this._onQueryParserSearch.bind(this)); + const options = this.getOptions(); const {queryParams: {query='', mode=''}} = parseUrl(window.location.href); @@ -169,6 +171,18 @@ class DisplaySearch extends Display { // Private + _onQueryParserSearch({type, definitions, sentence, cause}) { + this.setContent(type, { + definitions, + context: { + focus: false, + disableHistory: cause === 'mouse', + sentence, + url: window.location.href + } + }); + } + _onSearchInput() { this._updateSearchButton(); |