diff options
Diffstat (limited to 'ext/js/dom/panel-element.js')
-rw-r--r-- | ext/js/dom/panel-element.js | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/ext/js/dom/panel-element.js b/ext/js/dom/panel-element.js index 9c1289d7..0f2801e6 100644 --- a/ext/js/dom/panel-element.js +++ b/ext/js/dom/panel-element.js @@ -89,16 +89,14 @@ export class PanelElement extends EventDispatcher { * @param {(details: import('core').EventArgument<import('panel-element').Events, TName>) => void} callback */ on(eventName, callback) { - if (eventName === 'visibilityChanged') { - if (this._mutationObserver === null) { - this._visible = this.isVisible(); - this._mutationObserver = new MutationObserver(this._onMutation.bind(this)); - this._mutationObserver.observe(this._node, { - attributes: true, - attributeFilter: ['hidden'], - attributeOldValue: true - }); - } + if (eventName === 'visibilityChanged' && this._mutationObserver === null) { + this._visible = this.isVisible(); + this._mutationObserver = new MutationObserver(this._onMutation.bind(this)); + this._mutationObserver.observe(this._node, { + attributes: true, + attributeFilter: ['hidden'], + attributeOldValue: true + }); } super.on(eventName, callback); } @@ -111,11 +109,9 @@ export class PanelElement extends EventDispatcher { */ off(eventName, callback) { const result = super.off(eventName, callback); - if (eventName === 'visibilityChanged' && !this.hasListeners(eventName)) { - if (this._mutationObserver !== null) { - this._mutationObserver.disconnect(); - this._mutationObserver = null; - } + if (eventName === 'visibilityChanged' && !this.hasListeners(eventName) && this._mutationObserver !== null) { + this._mutationObserver.disconnect(); + this._mutationObserver = null; } return result; } |