bute("tabspecific", "true"); let container = doc.getElementById("mainPopupSet") || doc.querySelector("popupset") || doc.documentElement.appendChild(doc.createXULElement("popupset")); container.appendChild(panel); } this.#oldFocus = doc.activeElement; this.#picker = this.createPickerImpl(panel); this.#picker.openPicker(type, rect, detail); this.addPickerListeners(panel); } #cleanupPicker() { if (!this.#picker) { return; } this.#picker.closePicker(); this.#abortController.abort(); this.#picker = null; } // Close the picker and do some cleanup. close() { this.#cleanupPicker(); // Restore focus to where it was before the picker opened. this.#oldFocus?.focus(); this.#oldFocus = null; } // Listen to picker's event. addPickerListeners(panel) { if (!this.#picker) { return; } this.#abortController = new AbortController(); const { signal } = this.#abortController; panel.addEventListener("popuphidden", this, { signal }); panel.addEventListener("InputPickerValueChanged", this, { signal, }); panel.addEventListener("InputPickerValueCleared", this, { signal, }); } } PK