summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/layout/layout.js
blob: cf0955b279437aab33c463ea7a2c04bc5849aa6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* 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/. */

"use strict";

const Services = require("Services");
const { createFactory, createElement } = require("devtools/client/shared/vendor/react");
const { Provider } = require("devtools/client/shared/vendor/react-redux");

const App = createFactory(require("./components/App"));
const Store = require("./store");

const { LocalizationHelper } = require("devtools/shared/l10n");
const INSPECTOR_L10N =
      new LocalizationHelper("devtools/client/locales/inspector.properties");

function LayoutView(inspector, window) {
  this.inspector = inspector;
  this.document = window.document;
  this.store = null;

  this.init();
}

LayoutView.prototype = {

  init() {
    let store = this.store = Store();
    let provider = createElement(Provider, {
      store,
      id: "layoutview",
      title: INSPECTOR_L10N.getStr("inspector.sidebar.layoutViewTitle"),
      key: "layoutview",
    }, App());

    let defaultTab = Services.prefs.getCharPref("devtools.inspector.activeSidebar");

    this.inspector.addSidebarTab(
      "layoutview",
      INSPECTOR_L10N.getStr("inspector.sidebar.layoutViewTitle"),
      provider,
      defaultTab == "layoutview"
    );
  },

  destroy() {
    this.inspector = null;
    this.document = null;
    this.store = null;
  },
};

exports.LayoutView = LayoutView;