diff options
Diffstat (limited to 'ext/fg/js/frontend.js')
| -rw-r--r-- | ext/fg/js/frontend.js | 28 | 
1 files changed, 18 insertions, 10 deletions
diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 52620933..0b60aa2b 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -28,6 +28,10 @@ class Frontend {          this.options = null;          this.ignoreNodes = (Array.isArray(ignoreNodes) && ignoreNodes.length > 0 ? ignoreNodes.join(',') : null); +        this.optionsContext = { +            depth: popup.depth +        }; +          this.primaryTouchIdentifier = null;          this.contextMenuChecking = false;          this.contextMenuPrevent = false; @@ -40,9 +44,9 @@ class Frontend {      static create() {          const initializationData = window.frontendInitializationData;          const isNested = (initializationData !== null && typeof initializationData === 'object'); -        const {id, parentFrameId, ignoreNodes} = isNested ? initializationData : {}; +        const {id, depth, parentFrameId, ignoreNodes} = isNested ? initializationData : {}; -        const popup = isNested ? new PopupProxy(id, parentFrameId) : PopupProxyHost.instance.createPopup(null); +        const popup = isNested ? new PopupProxy(depth + 1, id, parentFrameId) : PopupProxyHost.instance.createPopup(null);          const frontend = new Frontend(popup, ignoreNodes);          frontend.prepare();          return frontend; @@ -50,7 +54,7 @@ class Frontend {      async prepare() {          try { -            this.options = await apiOptionsGet(); +            this.options = await apiOptionsGet(this.optionsContext);              window.addEventListener('message', this.onFrameMessage.bind(this));              window.addEventListener('mousedown', this.onMouseDown.bind(this)); @@ -261,11 +265,8 @@ class Frontend {      onBgMessage({action, params}, sender, callback) {          const handlers = { -            optionsSet: ({options}) => { -                this.options = options; -                if (!this.options.enable) { -                    this.searchClear(); -                } +            optionsUpdate: () => { +                this.updateOptions();              },              popupSetVisible: ({visible}) => { @@ -284,6 +285,13 @@ class Frontend {          console.log(error);      } +    async updateOptions() { +        this.options = await apiOptionsGet(this.optionsContext); +        if (!this.options.enable) { +            this.searchClear(); +        } +    } +      popupTimerSet(callback) {          this.popupTimerClear();          this.popupTimer = window.setTimeout(callback, this.options.scanning.delay); @@ -347,7 +355,7 @@ class Frontend {              return;          } -        const {definitions, length} = await apiTermsFind(searchText); +        const {definitions, length} = await apiTermsFind(searchText, this.optionsContext);          if (definitions.length === 0) {              return false;          } @@ -380,7 +388,7 @@ class Frontend {              return;          } -        const definitions = await apiKanjiFind(searchText); +        const definitions = await apiKanjiFind(searchText, this.optionsContext);          if (definitions.length === 0) {              return false;          }  |