tor-browser

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

Sidebar.js (2534B)


      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 file,
      3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 const {
      8  createFactory,
      9  PureComponent,
     10 } = require("resource://devtools/client/shared/vendor/react.mjs");
     11 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs");
     12 
     13 const SidebarToggle = createFactory(
     14  require("resource://devtools/client/shared/components/SidebarToggle.js")
     15 );
     16 const Tabs = createFactory(
     17  ChromeUtils.importESModule(
     18    "resource://devtools/client/shared/components/tabs/Tabs.mjs",
     19    { global: "current" }
     20  ).Tabs
     21 );
     22 
     23 class Sidebar extends PureComponent {
     24  static get propTypes() {
     25    return {
     26      children: PropTypes.oneOfType([PropTypes.array, PropTypes.element])
     27        .isRequired,
     28      onAfterChange: PropTypes.func,
     29      onAllTabsMenuClick: PropTypes.func,
     30      renderOnlySelected: PropTypes.bool,
     31      showAllTabsMenu: PropTypes.bool,
     32      allTabsMenuButtonTooltip: PropTypes.string,
     33      sidebarToggleButton: PropTypes.shape({
     34        collapsed: PropTypes.bool.isRequired,
     35        collapsePaneTitle: PropTypes.string.isRequired,
     36        expandPaneTitle: PropTypes.string.isRequired,
     37        onClick: PropTypes.func.isRequired,
     38        alignRight: PropTypes.bool,
     39        canVerticalSplit: PropTypes.bool,
     40      }),
     41      activeTab: PropTypes.number,
     42    };
     43  }
     44 
     45  constructor(props) {
     46    super(props);
     47    this.renderSidebarToggle = this.renderSidebarToggle.bind(this);
     48  }
     49 
     50  renderSidebarToggle() {
     51    if (!this.props.sidebarToggleButton) {
     52      return null;
     53    }
     54 
     55    const {
     56      collapsed,
     57      collapsePaneTitle,
     58      expandPaneTitle,
     59      onClick,
     60      alignRight,
     61      canVerticalSplit,
     62    } = this.props.sidebarToggleButton;
     63 
     64    return SidebarToggle({
     65      collapsed,
     66      collapsePaneTitle,
     67      expandPaneTitle,
     68      onClick,
     69      alignRight,
     70      canVerticalSplit,
     71    });
     72  }
     73 
     74  render() {
     75    const { renderSidebarToggle } = this;
     76    const {
     77      children,
     78      onAfterChange,
     79      onAllTabsMenuClick,
     80      renderOnlySelected,
     81      showAllTabsMenu,
     82      allTabsMenuButtonTooltip,
     83      activeTab,
     84    } = this.props;
     85 
     86    return Tabs(
     87      {
     88        onAfterChange,
     89        onAllTabsMenuClick,
     90        renderOnlySelected,
     91        renderSidebarToggle,
     92        showAllTabsMenu,
     93        allTabsMenuButtonTooltip,
     94        activeTab,
     95      },
     96      children
     97    );
     98  }
     99 }
    100 
    101 module.exports = Sidebar;