diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-12-15 20:48:52 -0500 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-12-16 19:54:41 -0500 | 
| commit | 44bde5c6765317294af317f7bbbdfa70d0d40b77 (patch) | |
| tree | 4e97e53d84c2237bc2ff2bd041985a639bdc773a | |
| parent | 4014bbab427c9c9441ca778f3cda528e35f054f6 (diff) | |
Reorganize popup-only public functions
| -rw-r--r-- | ext/fg/js/popup-proxy-host.js | 2 | ||||
| -rw-r--r-- | ext/fg/js/popup.js | 94 | 
2 files changed, 49 insertions, 47 deletions
| diff --git a/ext/fg/js/popup-proxy-host.js b/ext/fg/js/popup-proxy-host.js index ea343c19..bf6604e5 100644 --- a/ext/fg/js/popup-proxy-host.js +++ b/ext/fg/js/popup-proxy-host.js @@ -101,7 +101,7 @@ class PopupProxyHost {      async _onApiShowContent(id, elementRect, writingMode, type, details) {          const popup = this._getPopup(id);          elementRect = PopupProxyHost._convertJsonRectToDOMRect(popup, elementRect); -        if (!PopupProxyHost._popupCanShow(popup)) { return Promise.resolve(false); } +        if (!PopupProxyHost._popupCanShow(popup)) { return; }          return await popup.showContent(elementRect, writingMode, type, details);      } diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index 8226a13a..9040d568 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -105,6 +105,54 @@ class Popup {          }      } +    // Popup-only public functions + +    isVisible() { +        return this.isInjected && (this.visibleOverride !== null ? this.visibleOverride : this.visible); +    } + +    updateTheme() { +        this.container.dataset.yomichanTheme = this.options.general.popupOuterTheme; +        this.container.dataset.yomichanSiteColor = this.getSiteColor(); +    } + +    async setCustomOuterCss(css, injectDirectly) { +        // Cannot repeatedly inject stylesheets using web extension APIs since there is no way to remove them. +        if (this.stylesheetInjectedViaApi) { return; } + +        if (injectDirectly || Popup.isOnExtensionPage()) { +            Popup.injectOuterStylesheet(css); +        } else { +            if (!css) { return; } +            try { +                await apiInjectStylesheet(css); +                this.stylesheetInjectedViaApi = true; +            } catch (e) { +                // NOP +            } +        } +    } + +    static injectOuterStylesheet(css) { +        if (Popup.outerStylesheet === null) { +            if (!css) { return; } +            Popup.outerStylesheet = document.createElement('style'); +            Popup.outerStylesheet.id = 'yomichan-popup-outer-stylesheet'; +        } + +        const outerStylesheet = Popup.outerStylesheet; +        if (css) { +            outerStylesheet.textContent = css; + +            const par = document.head; +            if (par && outerStylesheet.parentNode !== par) { +                par.appendChild(outerStylesheet); +            } +        } else { +            outerStylesheet.textContent = ''; +        } +    } +      inject() {          if (this.injectPromise === null) {              this.injectPromise = this.createInjectPromise(); @@ -183,10 +231,6 @@ class Popup {          }      } -    isVisible() { -        return this.isInjected && (this.visibleOverride !== null ? this.visibleOverride : this.visible); -    } -      setVisible(visible) {          this.visible = visible;          this.updateVisibility(); @@ -212,11 +256,6 @@ class Popup {          }      } -    updateTheme() { -        this.container.dataset.yomichanTheme = this.options.general.popupOuterTheme; -        this.container.dataset.yomichanSiteColor = this.getSiteColor(); -    } -      getSiteColor() {          const color = [255, 255, 255];          Popup.addColor(color, Popup.getColorInfo(window.getComputedStyle(document.documentElement).backgroundColor)); @@ -225,23 +264,6 @@ class Popup {          return dark ? 'dark' : 'light';      } -    async setCustomOuterCss(css, injectDirectly) { -        // Cannot repeatedly inject stylesheets using web extension APIs since there is no way to remove them. -        if (this.stylesheetInjectedViaApi) { return; } - -        if (injectDirectly || Popup.isOnExtensionPage()) { -            Popup.injectOuterStylesheet(css); -        } else { -            if (!css) { return; } -            try { -                await apiInjectStylesheet(css); -                this.stylesheetInjectedViaApi = true; -            } catch (e) { -                // NOP -            } -        } -    } -      invokeApi(action, params={}) {          this.container.contentWindow.postMessage({action, params}, '*');      } @@ -400,26 +422,6 @@ class Popup {              // NOP          }      } - -    static injectOuterStylesheet(css) { -        if (Popup.outerStylesheet === null) { -            if (!css) { return; } -            Popup.outerStylesheet = document.createElement('style'); -            Popup.outerStylesheet.id = 'yomichan-popup-outer-stylesheet'; -        } - -        const outerStylesheet = Popup.outerStylesheet; -        if (css) { -            outerStylesheet.textContent = css; - -            const par = document.head; -            if (par && outerStylesheet.parentNode !== par) { -                par.appendChild(outerStylesheet); -            } -        } else { -            outerStylesheet.textContent = ''; -        } -    }  }  Popup.outerStylesheet = null; |