/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ import { html, when } from "chrome://global/content/vendor/lit.all.mjs"; import { SidebarPage } from "./sidebar-page.mjs"; // eslint-disable-next-line import/no-unassigned-import import "chrome://global/content/elements/moz-button.mjs"; const l10nMap = new Map([ ["viewHistorySidebar", "sidebar-menu-history-label"], ["viewTabsSidebar", "sidebar-menu-synced-tabs-label"], ["viewBookmarksSidebar", "sidebar-menu-bookmarks-label"], ]); export class SidebarCustomize extends SidebarPage { constructor() { super(); this.activeExtIndex = 0; } static properties = { activeExtIndex: { type: Number }, }; static queries = { toolInputs: { all: ".customize-firefox-tools input" }, extensionLinks: { all: ".extension-link" }, }; connectedCallback() { super.connectedCallback(); this.getWindow().addEventListener("SidebarItemAdded", this); this.getWindow().addEventListener("SidebarItemChanged", this); this.getWindow().addEventListener("SidebarItemRemoved", this); } disconnectedCallback() { super.disconnectedCallback(); this.getWindow().removeEventListener("SidebarItemAdded", this); this.getWindow().removeEventListener("SidebarItemChanged", this); this.getWindow().removeEventListener("SidebarItemRemoved", this); } get sidebarLauncher() { return this.getWindow().document.querySelector("sidebar-launcher"); } getWindow() { return window.browsingContext.embedderWindowGlobal.browsingContext.window; } closeCustomizeView(e) { e.preventDefault(); let view = e.target.getAttribute("view"); this.getWindow().SidebarController.toggle(view); } handleEvent(e) { switch (e.type) { case "SidebarItemAdded": case "SidebarItemChanged": case "SidebarItemRemoved": this.requestUpdate(); break; } } async onToggleInput(e) { e.preventDefault(); this.getWindow().SidebarController.toggleTool(e.target.id); } getInputL10nId(view) { return l10nMap.get(view); } inputTemplate(tool) { return html`