diff options
| author | siikamiika <siikamiika@users.noreply.github.com> | 2019-08-03 15:06:28 +0300 | 
|---|---|---|
| committer | siikamiika <siikamiika@users.noreply.github.com> | 2019-08-03 15:06:28 +0300 | 
| commit | afc771de9fd34a7b16a6bbf8bcdc85dd758d7836 (patch) | |
| tree | 7651eab807019c1e5de83f1f05c505534bc819d4 | |
| parent | 0ee6d05cb15a8bc94f120c2896e7537fd969aaed (diff) | |
inject doc functions as dependencies
| -rw-r--r-- | ext/bg/js/search.js | 2 | ||||
| -rw-r--r-- | ext/fg/js/float.js | 37 | ||||
| -rw-r--r-- | ext/mixed/js/display.js | 39 | 
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); |