tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

menu.js (1218B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
      4 
      5 const Menu = require("resource://devtools/client/framework/menu.js");
      6 const MenuItem = require("resource://devtools/client/framework/menu-item.js");
      7 
      8 export function showMenu(evt, items) {
      9  if (items.length === 0) {
     10    return;
     11  }
     12 
     13  const menu = new Menu();
     14  items
     15    .filter(item => item.visible === undefined || item.visible === true)
     16    .forEach(item => {
     17      const menuItem = new MenuItem(item);
     18      menuItem.submenu = createSubMenu(item.submenu);
     19      menu.append(menuItem);
     20    });
     21 
     22  menu.popup(evt.screenX, evt.screenY, window.parent.document);
     23 }
     24 
     25 function createSubMenu(subItems) {
     26  if (subItems) {
     27    const subMenu = new Menu();
     28    subItems.forEach(subItem => {
     29      subMenu.append(new MenuItem(subItem));
     30    });
     31    return subMenu;
     32  }
     33  return null;
     34 }
     35 
     36 export function buildMenu(items) {
     37  return items
     38    .map(itm => {
     39      const hide = typeof itm.hidden === "function" ? itm.hidden() : itm.hidden;
     40      return hide ? null : itm.item;
     41    })
     42    .filter(itm => itm !== null);
     43 }