Merge inbound to mozilla-central. a=merge
authorCsoregi Natalia <ncsoregi@mozilla.com>
Mon, 07 Jan 2019 23:46:59 +0200
changeset 509846 aac6849c6ff0eb4981b569988a094f04e42f14dd
parent 509835 14d8f03b496c919c3049db1a094570a7122a4513 (current diff)
parent 509845 f366780cecefaaf10c947449a65f299155038fed (diff)
child 509867 5429ea01ddec11832a4bf42b88c6355ad0c268b2
child 509940 5f427c2fdff5b3e4ff2e791c009f2b77e9a3d659
push id10547
push userffxbld-merge
push dateMon, 21 Jan 2019 13:03:58 +0000
treeherdermozilla-beta@24ec1916bffe [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone66.0a1
first release with
nightly linux32
aac6849c6ff0 / 66.0a1 / 20190107214730 / files
nightly linux64
aac6849c6ff0 / 66.0a1 / 20190107214730 / files
nightly mac
aac6849c6ff0 / 66.0a1 / 20190107214730 / files
nightly win32
aac6849c6ff0 / 66.0a1 / 20190107214730 / files
nightly win64
aac6849c6ff0 / 66.0a1 / 20190107214730 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge inbound to mozilla-central. a=merge
devtools/client/debugger/new/src/workers/parser/getScopes/moz.build
--- a/browser/extensions/pdfjs/README.mozilla
+++ b/browser/extensions/pdfjs/README.mozilla
@@ -1,5 +1,5 @@
 This is the PDF.js project output, https://github.com/mozilla/pdf.js
 
-Current extension version is: 2.1.153
+Current extension version is: 2.1.176
 
-Taken from upstream commit: 5a2bd9fc
+Taken from upstream commit: e4d2a160
--- a/browser/extensions/pdfjs/content/PdfJsDefaultPreferences.jsm
+++ b/browser/extensions/pdfjs/content/PdfJsDefaultPreferences.jsm
@@ -37,11 +37,12 @@ var PdfJsDefaultPreferences = Object.fre
  "useOnlyCssZoom": false,
  "externalLinkTarget": 0,
  "renderer": "canvas",
  "renderInteractiveForms": false,
  "enablePrintAutoRotate": false,
  "disableOpenActionDestination": true,
  "disablePageMode": false,
  "disablePageLabels": false,
+ "historyUpdateUrl": false,
  "scrollModeOnLoad": 0,
  "spreadModeOnLoad": 0
 });
--- a/browser/extensions/pdfjs/content/build/pdf.js
+++ b/browser/extensions/pdfjs/content/build/pdf.js
@@ -118,18 +118,18 @@ return /******/ (function(modules) { // 
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
 
-var pdfjsVersion = '2.1.153';
-var pdfjsBuild = '5a2bd9fc';
+var pdfjsVersion = '2.1.176';
+var pdfjsBuild = 'e4d2a160';
 
 var pdfjsSharedUtil = __w_pdfjs_require__(1);
 
 var pdfjsDisplayAPI = __w_pdfjs_require__(7);
 
 var pdfjsDisplayTextLayer = __w_pdfjs_require__(19);
 
 var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(20);
@@ -5149,17 +5149,17 @@ function _fetchDocument(worker, source, 
 
   if (pdfDataRangeTransport) {
     source.length = pdfDataRangeTransport.length;
     source.initialData = pdfDataRangeTransport.initialData;
   }
 
   return worker.messageHandler.sendWithPromise('GetDocRequest', {
     docId,
-    apiVersion: '2.1.153',
+    apiVersion: '2.1.176',
     source: {
       data: source.data,
       url: source.url,
       password: source.password,
       disableAutoFetch: source.disableAutoFetch,
       rangeChunkSize: source.rangeChunkSize,
       length: source.length
     },
@@ -6880,19 +6880,19 @@ const InternalRenderTask = function Inte
       }
     }
 
   }
 
   return InternalRenderTask;
 }();
 
-const version = '2.1.153';
+const version = '2.1.176';
 exports.version = version;
-const build = '5a2bd9fc';
+const build = 'e4d2a160';
 exports.build = build;
 
 /***/ }),
 /* 8 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
@@ -10694,17 +10694,17 @@ function isWhitespaceString(s) {
     }
   }
 
   return true;
 }
 
 class XMLParserBase {
   _resolveEntities(s) {
-    return s.replace(/&([^;]+);/g, function (all, entity) {
+    return s.replace(/&([^;]+);/g, (all, entity) => {
       if (entity.substring(0, 2) === '#x') {
         return String.fromCharCode(parseInt(entity.substring(2), 16));
       } else if (entity.substring(0, 1) === '#') {
         return String.fromCharCode(parseInt(entity.substring(1), 10));
       }
 
       switch (entity) {
         case 'lt':
@@ -10984,16 +10984,21 @@ class SimpleDOMNode {
   get nextSibling() {
     const childNodes = this.parentNode.childNodes;
 
     if (!childNodes) {
       return undefined;
     }
 
     const index = childNodes.indexOf(this);
+
+    if (index === -1) {
+      return undefined;
+    }
+
     return childNodes[index + 1];
   }
 
   get textContent() {
     if (!this.childNodes) {
       return this.nodeValue || '';
     }
 
@@ -11073,19 +11078,23 @@ class SimpleXMLParser extends XMLParserB
     }
 
     this._stack.push(this._currentFragment);
 
     this._currentFragment = node.childNodes;
   }
 
   onEndElement(name) {
-    this._currentFragment = this._stack.pop();
+    this._currentFragment = this._stack.pop() || [];
     const lastElement = this._currentFragment[this._currentFragment.length - 1];
 
+    if (!lastElement) {
+      return;
+    }
+
     for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
       lastElement.childNodes[i].parentNode = lastElement;
     }
   }
 
   onError(code) {
     this._errorCode = code;
   }
--- a/browser/extensions/pdfjs/content/build/pdf.worker.js
+++ b/browser/extensions/pdfjs/content/build/pdf.worker.js
@@ -118,18 +118,18 @@ return /******/ (function(modules) { // 
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
 
-var pdfjsVersion = '2.1.153';
-var pdfjsBuild = '5a2bd9fc';
+var pdfjsVersion = '2.1.176';
+var pdfjsBuild = 'e4d2a160';
 
 var pdfjsCoreWorker = __w_pdfjs_require__(1);
 
 exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;
 
 /***/ }),
 /* 1 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
@@ -370,17 +370,17 @@ var WorkerMessageHandler = {
   },
 
   createDocumentHandler(docParams, port) {
     var pdfManager;
     var terminated = false;
     var cancelXHRs = null;
     var WorkerTasks = [];
     let apiVersion = docParams.apiVersion;
-    let workerVersion = '2.1.153';
+    let workerVersion = '2.1.176';
 
     if (apiVersion !== workerVersion) {
       throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`);
     }
 
     var docId = docParams.docId;
     var docBaseUrl = docParams.docBaseUrl;
     var workerHandlerName = docParams.docId + '_worker';
@@ -14937,360 +14937,356 @@ exports.Jbig2Image = Jbig2Image;
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.ArithmeticDecoder = void 0;
-
-var ArithmeticDecoder = function ArithmeticDecoderClosure() {
-  var QeTable = [{
-    qe: 0x5601,
-    nmps: 1,
-    nlps: 1,
-    switchFlag: 1
-  }, {
-    qe: 0x3401,
-    nmps: 2,
-    nlps: 6,
-    switchFlag: 0
-  }, {
-    qe: 0x1801,
-    nmps: 3,
-    nlps: 9,
-    switchFlag: 0
-  }, {
-    qe: 0x0AC1,
-    nmps: 4,
-    nlps: 12,
-    switchFlag: 0
-  }, {
-    qe: 0x0521,
-    nmps: 5,
-    nlps: 29,
-    switchFlag: 0
-  }, {
-    qe: 0x0221,
-    nmps: 38,
-    nlps: 33,
-    switchFlag: 0
-  }, {
-    qe: 0x5601,
-    nmps: 7,
-    nlps: 6,
-    switchFlag: 1
-  }, {
-    qe: 0x5401,
-    nmps: 8,
-    nlps: 14,
-    switchFlag: 0
-  }, {
-    qe: 0x4801,
-    nmps: 9,
-    nlps: 14,
-    switchFlag: 0
-  }, {
-    qe: 0x3801,
-    nmps: 10,
-    nlps: 14,
-    switchFlag: 0
-  }, {
-    qe: 0x3001,
-    nmps: 11,
-    nlps: 17,
-    switchFlag: 0
-  }, {
-    qe: 0x2401,
-    nmps: 12,
-    nlps: 18,
-    switchFlag: 0
-  }, {
-    qe: 0x1C01,
-    nmps: 13,
-    nlps: 20,
-    switchFlag: 0
-  }, {
-    qe: 0x1601,
-    nmps: 29,
-    nlps: 21,
-    switchFlag: 0
-  }, {
-    qe: 0x5601,
-    nmps: 15,
-    nlps: 14,
-    switchFlag: 1
-  }, {
-    qe: 0x5401,
-    nmps: 16,
-    nlps: 14,
-    switchFlag: 0
-  }, {
-    qe: 0x5101,
-    nmps: 17,
-    nlps: 15,
-    switchFlag: 0
-  }, {
-    qe: 0x4801,
-    nmps: 18,
-    nlps: 16,
-    switchFlag: 0
-  }, {
-    qe: 0x3801,
-    nmps: 19,
-    nlps: 17,
-    switchFlag: 0
-  }, {
-    qe: 0x3401,
-    nmps: 20,
-    nlps: 18,
-    switchFlag: 0
-  }, {
-    qe: 0x3001,
-    nmps: 21,
-    nlps: 19,
-    switchFlag: 0
-  }, {
-    qe: 0x2801,
-    nmps: 22,
-    nlps: 19,
-    switchFlag: 0
-  }, {
-    qe: 0x2401,
-    nmps: 23,
-    nlps: 20,
-    switchFlag: 0
-  }, {
-    qe: 0x2201,
-    nmps: 24,
-    nlps: 21,
-    switchFlag: 0
-  }, {
-    qe: 0x1C01,
-    nmps: 25,
-    nlps: 22,
-    switchFlag: 0
-  }, {
-    qe: 0x1801,
-    nmps: 26,
-    nlps: 23,
-    switchFlag: 0
-  }, {
-    qe: 0x1601,
-    nmps: 27,
-    nlps: 24,
-    switchFlag: 0
-  }, {
-    qe: 0x1401,
-    nmps: 28,
-    nlps: 25,
-    switchFlag: 0
-  }, {
-    qe: 0x1201,
-    nmps: 29,
-    nlps: 26,
-    switchFlag: 0
-  }, {
-    qe: 0x1101,
-    nmps: 30,
-    nlps: 27,
-    switchFlag: 0
-  }, {
-    qe: 0x0AC1,
-    nmps: 31,
-    nlps: 28,
-    switchFlag: 0
-  }, {
-    qe: 0x09C1,
-    nmps: 32,
-    nlps: 29,
-    switchFlag: 0
-  }, {
-    qe: 0x08A1,
-    nmps: 33,
-    nlps: 30,
-    switchFlag: 0
-  }, {
-    qe: 0x0521,
-    nmps: 34,
-    nlps: 31,
-    switchFlag: 0
-  }, {
-    qe: 0x0441,
-    nmps: 35,
-    nlps: 32,
-    switchFlag: 0
-  }, {
-    qe: 0x02A1,
-    nmps: 36,
-    nlps: 33,
-    switchFlag: 0
-  }, {
-    qe: 0x0221,
-    nmps: 37,
-    nlps: 34,
-    switchFlag: 0
-  }, {
-    qe: 0x0141,
-    nmps: 38,
-    nlps: 35,
-    switchFlag: 0
-  }, {
-    qe: 0x0111,
-    nmps: 39,
-    nlps: 36,
-    switchFlag: 0
-  }, {
-    qe: 0x0085,
-    nmps: 40,
-    nlps: 37,
-    switchFlag: 0
-  }, {
-    qe: 0x0049,
-    nmps: 41,
-    nlps: 38,
-    switchFlag: 0
-  }, {
-    qe: 0x0025,
-    nmps: 42,
-    nlps: 39,
-    switchFlag: 0
-  }, {
-    qe: 0x0015,
-    nmps: 43,
-    nlps: 40,
-    switchFlag: 0
-  }, {
-    qe: 0x0009,
-    nmps: 44,
-    nlps: 41,
-    switchFlag: 0
-  }, {
-    qe: 0x0005,
-    nmps: 45,
-    nlps: 42,
-    switchFlag: 0
-  }, {
-    qe: 0x0001,
-    nmps: 45,
-    nlps: 43,
-    switchFlag: 0
-  }, {
-    qe: 0x5601,
-    nmps: 46,
-    nlps: 46,
-    switchFlag: 0
-  }];
-
-  function ArithmeticDecoder(data, start, end) {
+const QeTable = [{
+  qe: 0x5601,
+  nmps: 1,
+  nlps: 1,
+  switchFlag: 1
+}, {
+  qe: 0x3401,
+  nmps: 2,
+  nlps: 6,
+  switchFlag: 0
+}, {
+  qe: 0x1801,
+  nmps: 3,
+  nlps: 9,
+  switchFlag: 0
+}, {
+  qe: 0x0AC1,
+  nmps: 4,
+  nlps: 12,
+  switchFlag: 0
+}, {
+  qe: 0x0521,
+  nmps: 5,
+  nlps: 29,
+  switchFlag: 0
+}, {
+  qe: 0x0221,
+  nmps: 38,
+  nlps: 33,
+  switchFlag: 0
+}, {
+  qe: 0x5601,
+  nmps: 7,
+  nlps: 6,
+  switchFlag: 1
+}, {
+  qe: 0x5401,
+  nmps: 8,
+  nlps: 14,
+  switchFlag: 0
+}, {
+  qe: 0x4801,
+  nmps: 9,
+  nlps: 14,
+  switchFlag: 0
+}, {
+  qe: 0x3801,
+  nmps: 10,
+  nlps: 14,
+  switchFlag: 0
+}, {
+  qe: 0x3001,
+  nmps: 11,
+  nlps: 17,
+  switchFlag: 0
+}, {
+  qe: 0x2401,
+  nmps: 12,
+  nlps: 18,
+  switchFlag: 0
+}, {
+  qe: 0x1C01,
+  nmps: 13,
+  nlps: 20,
+  switchFlag: 0
+}, {
+  qe: 0x1601,
+  nmps: 29,
+  nlps: 21,
+  switchFlag: 0
+}, {
+  qe: 0x5601,
+  nmps: 15,
+  nlps: 14,
+  switchFlag: 1
+}, {
+  qe: 0x5401,
+  nmps: 16,
+  nlps: 14,
+  switchFlag: 0
+}, {
+  qe: 0x5101,
+  nmps: 17,
+  nlps: 15,
+  switchFlag: 0
+}, {
+  qe: 0x4801,
+  nmps: 18,
+  nlps: 16,
+  switchFlag: 0
+}, {
+  qe: 0x3801,
+  nmps: 19,
+  nlps: 17,
+  switchFlag: 0
+}, {
+  qe: 0x3401,
+  nmps: 20,
+  nlps: 18,
+  switchFlag: 0
+}, {
+  qe: 0x3001,
+  nmps: 21,
+  nlps: 19,
+  switchFlag: 0
+}, {
+  qe: 0x2801,
+  nmps: 22,
+  nlps: 19,
+  switchFlag: 0
+}, {
+  qe: 0x2401,
+  nmps: 23,
+  nlps: 20,
+  switchFlag: 0
+}, {
+  qe: 0x2201,
+  nmps: 24,
+  nlps: 21,
+  switchFlag: 0
+}, {
+  qe: 0x1C01,
+  nmps: 25,
+  nlps: 22,
+  switchFlag: 0
+}, {
+  qe: 0x1801,
+  nmps: 26,
+  nlps: 23,
+  switchFlag: 0
+}, {
+  qe: 0x1601,
+  nmps: 27,
+  nlps: 24,
+  switchFlag: 0
+}, {
+  qe: 0x1401,
+  nmps: 28,
+  nlps: 25,
+  switchFlag: 0
+}, {
+  qe: 0x1201,
+  nmps: 29,
+  nlps: 26,
+  switchFlag: 0
+}, {
+  qe: 0x1101,
+  nmps: 30,
+  nlps: 27,
+  switchFlag: 0
+}, {
+  qe: 0x0AC1,
+  nmps: 31,
+  nlps: 28,
+  switchFlag: 0
+}, {
+  qe: 0x09C1,
+  nmps: 32,
+  nlps: 29,
+  switchFlag: 0
+}, {
+  qe: 0x08A1,
+  nmps: 33,
+  nlps: 30,
+  switchFlag: 0
+}, {
+  qe: 0x0521,
+  nmps: 34,
+  nlps: 31,
+  switchFlag: 0
+}, {
+  qe: 0x0441,
+  nmps: 35,
+  nlps: 32,
+  switchFlag: 0
+}, {
+  qe: 0x02A1,
+  nmps: 36,
+  nlps: 33,
+  switchFlag: 0
+}, {
+  qe: 0x0221,
+  nmps: 37,
+  nlps: 34,
+  switchFlag: 0
+}, {
+  qe: 0x0141,
+  nmps: 38,
+  nlps: 35,
+  switchFlag: 0
+}, {
+  qe: 0x0111,
+  nmps: 39,
+  nlps: 36,
+  switchFlag: 0
+}, {
+  qe: 0x0085,
+  nmps: 40,
+  nlps: 37,
+  switchFlag: 0
+}, {
+  qe: 0x0049,
+  nmps: 41,
+  nlps: 38,
+  switchFlag: 0
+}, {
+  qe: 0x0025,
+  nmps: 42,
+  nlps: 39,
+  switchFlag: 0
+}, {
+  qe: 0x0015,
+  nmps: 43,
+  nlps: 40,
+  switchFlag: 0
+}, {
+  qe: 0x0009,
+  nmps: 44,
+  nlps: 41,
+  switchFlag: 0
+}, {
+  qe: 0x0005,
+  nmps: 45,
+  nlps: 42,
+  switchFlag: 0
+}, {
+  qe: 0x0001,
+  nmps: 45,
+  nlps: 43,
+  switchFlag: 0
+}, {
+  qe: 0x5601,
+  nmps: 46,
+  nlps: 46,
+  switchFlag: 0
+}];
+
+class ArithmeticDecoder {
+  constructor(data, start, end) {
     this.data = data;
     this.bp = start;
     this.dataEnd = end;
     this.chigh = data[start];
     this.clow = 0;
     this.byteIn();
     this.chigh = this.chigh << 7 & 0xFFFF | this.clow >> 9 & 0x7F;
     this.clow = this.clow << 7 & 0xFFFF;
     this.ct -= 7;
     this.a = 0x8000;
   }
 
-  ArithmeticDecoder.prototype = {
-    byteIn: function ArithmeticDecoder_byteIn() {
-      var data = this.data;
-      var bp = this.bp;
-
-      if (data[bp] === 0xFF) {
-        var b1 = data[bp + 1];
-
-        if (b1 > 0x8F) {
-          this.clow += 0xFF00;
-          this.ct = 8;
-        } else {
-          bp++;
-          this.clow += data[bp] << 9;
-          this.ct = 7;
-          this.bp = bp;
-        }
+  byteIn() {
+    const data = this.data;
+    let bp = this.bp;
+
+    if (data[bp] === 0xFF) {
+      if (data[bp + 1] > 0x8F) {
+        this.clow += 0xFF00;
+        this.ct = 8;
       } else {
         bp++;
-        this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xFF00;
-        this.ct = 8;
+        this.clow += data[bp] << 9;
+        this.ct = 7;
         this.bp = bp;
       }
-
-      if (this.clow > 0xFFFF) {
-        this.chigh += this.clow >> 16;
-        this.clow &= 0xFFFF;
-      }
-    },
-    readBit: function ArithmeticDecoder_readBit(contexts, pos) {
-      var cx_index = contexts[pos] >> 1,
-          cx_mps = contexts[pos] & 1;
-      var qeTableIcx = QeTable[cx_index];
-      var qeIcx = qeTableIcx.qe;
-      var d;
-      var a = this.a - qeIcx;
-
-      if (this.chigh < qeIcx) {
-        if (a < qeIcx) {
-          a = qeIcx;
-          d = cx_mps;
-          cx_index = qeTableIcx.nmps;
-        } else {
-          a = qeIcx;
-          d = 1 ^ cx_mps;
-
-          if (qeTableIcx.switchFlag === 1) {
-            cx_mps = d;
-          }
-
-          cx_index = qeTableIcx.nlps;
-        }
-      } else {
-        this.chigh -= qeIcx;
-
-        if ((a & 0x8000) !== 0) {
-          this.a = a;
-          return cx_mps;
-        }
-
-        if (a < qeIcx) {
-          d = 1 ^ cx_mps;
-
-          if (qeTableIcx.switchFlag === 1) {
-            cx_mps = d;
-          }
-
-          cx_index = qeTableIcx.nlps;
-        } else {
-          d = cx_mps;
-          cx_index = qeTableIcx.nmps;
-        }
-      }
-
-      do {
-        if (this.ct === 0) {
-          this.byteIn();
-        }
-
-        a <<= 1;
-        this.chigh = this.chigh << 1 & 0xFFFF | this.clow >> 15 & 1;
-        this.clow = this.clow << 1 & 0xFFFF;
-        this.ct--;
-      } while ((a & 0x8000) === 0);
-
-      this.a = a;
-      contexts[pos] = cx_index << 1 | cx_mps;
-      return d;
-    }
-  };
-  return ArithmeticDecoder;
-}();
+    } else {
+      bp++;
+      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xFF00;
+      this.ct = 8;
+      this.bp = bp;
+    }
+
+    if (this.clow > 0xFFFF) {
+      this.chigh += this.clow >> 16;
+      this.clow &= 0xFFFF;
+    }
+  }
+
+  readBit(contexts, pos) {
+    let cx_index = contexts[pos] >> 1,
+        cx_mps = contexts[pos] & 1;
+    const qeTableIcx = QeTable[cx_index];
+    const qeIcx = qeTableIcx.qe;
+    let d;
+    let a = this.a - qeIcx;
+
+    if (this.chigh < qeIcx) {
+      if (a < qeIcx) {
+        a = qeIcx;
+        d = cx_mps;
+        cx_index = qeTableIcx.nmps;
+      } else {
+        a = qeIcx;
+        d = 1 ^ cx_mps;
+
+        if (qeTableIcx.switchFlag === 1) {
+          cx_mps = d;
+        }
+
+        cx_index = qeTableIcx.nlps;
+      }
+    } else {
+      this.chigh -= qeIcx;
+
+      if ((a & 0x8000) !== 0) {
+        this.a = a;
+        return cx_mps;
+      }
+
+      if (a < qeIcx) {
+        d = 1 ^ cx_mps;
+
+        if (qeTableIcx.switchFlag === 1) {
+          cx_mps = d;
+        }
+
+        cx_index = qeTableIcx.nlps;
+      } else {
+        d = cx_mps;
+        cx_index = qeTableIcx.nmps;
+      }
+    }
+
+    do {
+      if (this.ct === 0) {
+        this.byteIn();
+      }
+
+      a <<= 1;
+      this.chigh = this.chigh << 1 & 0xFFFF | this.clow >> 15 & 1;
+      this.clow = this.clow << 1 & 0xFFFF;
+      this.ct--;
+    } while ((a & 0x8000) === 0);
+
+    this.a = a;
+    contexts[pos] = cx_index << 1 | cx_mps;
+    return d;
+  }
+
+}
 
 exports.ArithmeticDecoder = ArithmeticDecoder;
 
 /***/ }),
 /* 20 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
@@ -21980,17 +21976,18 @@ class AnnotationBorderStyle {
     this.style = _util.AnnotationBorderStyleType.SOLID;
     this.dashArray = [3];
     this.horizontalCornerRadius = 0;
     this.verticalCornerRadius = 0;
   }
 
   setWidth(width) {
     if ((0, _primitives.isName)(width)) {
-      width = parseFloat(width.name);
+      this.width = 0;
+      return;
     }
 
     if (Number.isInteger(width)) {
       this.width = width;
     }
   }
 
   setStyle(style) {
@@ -28764,17 +28761,29 @@ var Font = function FontClosure() {
           if (metrics) {
             metrics.data = null;
           }
 
           return;
         }
 
         font.pos = (font.start ? font.start : 0) + header.offset;
-        font.pos += header.length - 2;
+        font.pos += 4;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 2;
+        font.pos += 8;
+        font.pos += 2;
         var numOfMetrics = font.getUint16();
 
         if (numOfMetrics > numGlyphs) {
           (0, _util.info)('The numOfMetrics (' + numOfMetrics + ') should not be ' + 'greater than the numGlyphs (' + numGlyphs + ')');
           numOfMetrics = numGlyphs;
           header.data[34] = (numOfMetrics & 0xff00) >> 8;
           header.data[35] = numOfMetrics & 0x00ff;
         }
@@ -32255,21 +32264,21 @@ exports.CFFCompiler = CFFCompiler;
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.ExpertSubsetCharset = exports.ExpertCharset = exports.ISOAdobeCharset = void 0;
-var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];
+const ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];
 exports.ISOAdobeCharset = ISOAdobeCharset;
-var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
+const ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
 exports.ExpertCharset = ExpertCharset;
-var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];
+const ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];
 exports.ExpertSubsetCharset = ExpertSubsetCharset;
 
 /***/ }),
 /* 33 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
@@ -36866,17 +36875,17 @@ exports.getDingbatsGlyphsUnicode = getDi
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var getStdFontMap = (0, _util.getLookupTableFactory)(function (t) {
+const getStdFontMap = (0, _util.getLookupTableFactory)(function (t) {
   t['ArialNarrow'] = 'Helvetica';
   t['ArialNarrow-Bold'] = 'Helvetica-Bold';
   t['ArialNarrow-BoldItalic'] = 'Helvetica-BoldOblique';
   t['ArialNarrow-Italic'] = 'Helvetica-Oblique';
   t['ArialBlack'] = 'Helvetica';
   t['ArialBlack-Bold'] = 'Helvetica-Bold';
   t['ArialBlack-BoldItalic'] = 'Helvetica-BoldOblique';
   t['ArialBlack-Italic'] = 'Helvetica-Oblique';
@@ -36925,17 +36934,17 @@ var getStdFontMap = (0, _util.getLookupT
   t['TimesNewRomanPS-Italic'] = 'Times-Italic';
   t['TimesNewRomanPS-ItalicMT'] = 'Times-Italic';
   t['TimesNewRomanPSMT'] = 'Times-Roman';
   t['TimesNewRomanPSMT-Bold'] = 'Times-Bold';
   t['TimesNewRomanPSMT-BoldItalic'] = 'Times-BoldItalic';
   t['TimesNewRomanPSMT-Italic'] = 'Times-Italic';
 });
 exports.getStdFontMap = getStdFontMap;
-var getNonStdFontMap = (0, _util.getLookupTableFactory)(function (t) {
+const getNonStdFontMap = (0, _util.getLookupTableFactory)(function (t) {
   t['Calibri'] = 'Helvetica';
   t['Calibri-Bold'] = 'Helvetica-Bold';
   t['Calibri-BoldItalic'] = 'Helvetica-BoldOblique';
   t['Calibri-Italic'] = 'Helvetica-Oblique';
   t['CenturyGothic'] = 'Helvetica';
   t['CenturyGothic-Bold'] = 'Helvetica-Bold';
   t['CenturyGothic-BoldItalic'] = 'Helvetica-BoldOblique';
   t['CenturyGothic-Italic'] = 'Helvetica-Oblique';
@@ -36963,17 +36972,17 @@ var getNonStdFontMap = (0, _util.getLook
   t['MS-PMincho'] = 'MS PMincho';
   t['MS-PMincho-Bold'] = 'MS PMincho-Bold';
   t['MS-PMincho-BoldItalic'] = 'MS PMincho-BoldItalic';
   t['MS-PMincho-Italic'] = 'MS PMincho-Italic';
   t['NuptialScript'] = 'Times-Italic';
   t['Wingdings'] = 'ZapfDingbats';
 });
 exports.getNonStdFontMap = getNonStdFontMap;
-var getSerifFonts = (0, _util.getLookupTableFactory)(function (t) {
+const getSerifFonts = (0, _util.getLookupTableFactory)(function (t) {
   t['Adobe Jenson'] = true;
   t['Adobe Text'] = true;
   t['Albertus'] = true;
   t['Aldus'] = true;
   t['Alexandria'] = true;
   t['Algerian'] = true;
   t['American Typewriter'] = true;
   t['Antiqua'] = true;
@@ -37099,23 +37108,23 @@ var getSerifFonts = (0, _util.getLookupT
   t['Versailles'] = true;
   t['Wanted'] = true;
   t['Weiss'] = true;
   t['Wide Latin'] = true;
   t['Windsor'] = true;
   t['XITS'] = true;
 });
 exports.getSerifFonts = getSerifFonts;
-var getSymbolsFonts = (0, _util.getLookupTableFactory)(function (t) {
+const getSymbolsFonts = (0, _util.getLookupTableFactory)(function (t) {
   t['Dingbats'] = true;
   t['Symbol'] = true;
   t['ZapfDingbats'] = true;
 });
 exports.getSymbolsFonts = getSymbolsFonts;
-var getGlyphMapForStandardFonts = (0, _util.getLookupTableFactory)(function (t) {
+const getGlyphMapForStandardFonts = (0, _util.getLookupTableFactory)(function (t) {
   t[2] = 10;
   t[3] = 32;
   t[4] = 33;
   t[5] = 34;
   t[6] = 35;
   t[7] = 36;
   t[8] = 37;
   t[9] = 38;
@@ -37501,23 +37510,23 @@ var getGlyphMapForStandardFonts = (0, _u
   t[3182] = 7623;
   t[3282] = 11799;
   t[3316] = 578;
   t[3379] = 42785;
   t[3393] = 1159;
   t[3416] = 8377;
 });
 exports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts;
-var getSupplementalGlyphMapForArialBlack = (0, _util.getLookupTableFactory)(function (t) {
+const getSupplementalGlyphMapForArialBlack = (0, _util.getLookupTableFactory)(function (t) {
   t[227] = 322;
   t[264] = 261;
   t[291] = 346;
 });
 exports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack;
-let getSupplementalGlyphMapForCalibri = (0, _util.getLookupTableFactory)(function (t) {
+const getSupplementalGlyphMapForCalibri = (0, _util.getLookupTableFactory)(function (t) {
   t[1] = 32;
   t[4] = 65;
   t[17] = 66;
   t[18] = 67;
   t[24] = 68;
   t[28] = 69;
   t[38] = 70;
   t[39] = 71;
--- a/browser/extensions/pdfjs/content/web/viewer.js
+++ b/browser/extensions/pdfjs/content/web/viewer.js
@@ -1016,18 +1016,21 @@ let PDFViewerApplication = {
     let pagesPromise = pdfViewer.pagesPromise;
     let onePageRendered = pdfViewer.onePageRendered;
     let pdfThumbnailViewer = this.pdfThumbnailViewer;
     pdfThumbnailViewer.setDocument(pdfDocument);
     firstPagePromise.then(pdfPage => {
       this.loadingBar.setWidth(this.appConfig.viewerContainer);
 
       if (!_app_options.AppOptions.get('disableHistory') && !this.isViewerEmbedded) {
-        let resetHistory = !_app_options.AppOptions.get('showPreviousViewOnLoad');
-        this.pdfHistory.initialize(pdfDocument.fingerprint, resetHistory);
+        this.pdfHistory.initialize({
+          fingerprint: pdfDocument.fingerprint,
+          resetHistory: !_app_options.AppOptions.get('showPreviousViewOnLoad'),
+          updateUrl: _app_options.AppOptions.get('historyUpdateUrl')
+        });
 
         if (this.pdfHistory.initialBookmark) {
           this.initialBookmark = this.pdfHistory.initialBookmark;
           this.initialRotation = this.pdfHistory.initialRotation;
         }
       }
 
       let storePromise = store.getMultiple({
@@ -3923,16 +3926,20 @@ const defaultOptions = {
   externalLinkRel: {
     value: 'noopener noreferrer nofollow',
     kind: OptionKind.VIEWER
   },
   externalLinkTarget: {
     value: 0,
     kind: OptionKind.VIEWER
   },
+  historyUpdateUrl: {
+    value: false,
+    kind: OptionKind.VIEWER
+  },
   imageResourcesPath: {
     value: './images/',
     kind: OptionKind.VIEWER
   },
   maxCanvasPixels: {
     value: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216,
     kind: OptionKind.VIEWER
   },
@@ -5793,24 +5800,29 @@ class PDFHistory {
     this.eventBus.on('presentationmodechanged', evt => {
       this._isViewerInPresentationMode = evt.active || evt.switchInProgress;
     });
     this.eventBus.on('pagesloaded', evt => {
       this._isPagesLoaded = !!evt.pagesCount;
     });
   }
 
-  initialize(fingerprint, resetHistory = false) {
+  initialize({
+    fingerprint,
+    resetHistory = false,
+    updateUrl = false
+  }) {
     if (!fingerprint || typeof fingerprint !== 'string') {
       console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');
       return;
     }
 
     let reInitialized = this.initialized && this.fingerprint !== fingerprint;
     this.fingerprint = fingerprint;
+    this._updateUrl = updateUrl === true;
 
     if (!this.initialized) {
       this._bindEvents();
     }
 
     let state = window.history.state;
     this.initialized = true;
     this.initialBookmark = null;
@@ -5818,17 +5830,17 @@ class PDFHistory {
     this._popStateInProgress = false;
     this._blockHashChange = 0;
     this._currentHash = getCurrentHash();
     this._numPositionUpdates = 0;
     this._uid = this._maxUid = 0;
     this._destination = null;
     this._position = null;
 
-    if (!this._isValidState(state) || resetHistory) {
+    if (!this._isValidState(state, true) || resetHistory) {
       let {
         hash,
         page,
         rotation
       } = parseCurrentHash(this.linkService);
 
       if (!hash || reInitialized || resetHistory) {
         this._pushOrReplaceState(null, true);
@@ -5965,21 +5977,31 @@ class PDFHistory {
     let newState = {
       fingerprint: this.fingerprint,
       uid: shouldReplace ? this._uid : this._uid + 1,
       destination
     };
 
     this._updateInternalState(destination, newState.uid);
 
+    let newUrl;
+
+    if (this._updateUrl && destination && destination.hash) {
+      const baseUrl = document.location.href.split('#')[0];
+
+      if (!baseUrl.startsWith('file://')) {
+        newUrl = `${baseUrl}#${destination.hash}`;
+      }
+    }
+
     if (shouldReplace) {
-      window.history.replaceState(newState, '');
+      window.history.replaceState(newState, '', newUrl);
     } else {
       this._maxUid = this._uid;
-      window.history.pushState(newState, '');
+      window.history.pushState(newState, '', newUrl);
     }
   }
 
   _tryPushCurrentPosition(temporary = false) {
     if (!this._position) {
       return;
     }
 
@@ -6018,23 +6040,35 @@ class PDFHistory {
       }
 
       forceReplace = true;
     }
 
     this._pushOrReplaceState(position, forceReplace);
   }
 
-  _isValidState(state) {
+  _isValidState(state, checkReload = false) {
     if (!state) {
       return false;
     }
 
     if (state.fingerprint !== this.fingerprint) {
-      return false;
+      if (checkReload) {
+        if (typeof state.fingerprint !== 'string' || state.fingerprint.length !== this.fingerprint.length) {
+          return false;
+        }
+
+        const [perfEntry] = performance.getEntriesByType('navigation');
+
+        if (!perfEntry || perfEntry.type !== 'reload') {
+          return false;
+        }
+      } else {
+        return false;
+      }
     }
 
     if (!Number.isInteger(state.uid) || state.uid < 0) {
       return false;
     }
 
     if (state.destination === null || typeof state.destination !== 'object') {
       return false;
@@ -11595,16 +11629,17 @@ function getDefaultPreferences() {
       "useOnlyCssZoom": false,
       "externalLinkTarget": 0,
       "renderer": "canvas",
       "renderInteractiveForms": false,
       "enablePrintAutoRotate": false,
       "disableOpenActionDestination": true,
       "disablePageMode": false,
       "disablePageLabels": false,
+      "historyUpdateUrl": false,
       "scrollModeOnLoad": 0,
       "spreadModeOnLoad": 0
     });
   }
 
   return defaultPreferences;
 }
 
--- a/browser/extensions/pdfjs/moz.yaml
+++ b/browser/extensions/pdfjs/moz.yaml
@@ -15,15 +15,15 @@ origin:
   description: Portable Document Format (PDF) viewer that is built with HTML5
 
   # Full URL for the package's homepage/etc
   # Usually different from repository url
   url: https://github.com/mozilla/pdf.js
 
   # Human-readable identifier for this version/release
   # Generally "version NNN", "tag SSS", "bookmark SSS"
-  release: version 2.1.153
+  release: version 2.1.176
 
   # The package's license, where possible using the mnemonic from
   # https://spdx.org/licenses/
   # Multiple licenses can be specified (as a YAML list)
   # A "LICENSE" file must exist containing the full license text
   license: Apache-2.0
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/.babelrc
@@ -0,0 +1,45 @@
+{
+  "presets": [
+    "react",
+
+    [
+      "env",
+      {
+        "targets": {
+          "browsers": ["last 1 Chrome version", "last 1 Firefox version"]
+        },
+        "modules": "commonjs"
+      }
+    ]
+  ],
+  "plugins": [
+    "transform-flow-strip-types",
+    "transform-class-properties",
+    "syntax-trailing-function-commas",
+    "syntax-object-rest-spread",
+    [
+      "module-resolver",
+      {
+        "alias": {
+          "devtools/client/shared/vendor/react": "react",
+          "devtools/client/shared/vendor/react-dom": "react-dom"
+        }
+      }
+    ]
+  ],
+  "env": {
+    "test": {
+      "presets": [
+        [
+          "env",
+          {
+            "targets": {
+              "node": 7
+            },
+            "modules": "commonjs"
+          }
+        ]
+      ]
+    }
+  }
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/images/Svg.js
@@ -0,0 +1,109 @@
+/* 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/>. */
+
+const React = require("react");
+import InlineSVG from "svg-inline-react";
+
+const svg = {
+  "angle-brackets": require("./angle-brackets.svg"),
+  angular: require("./angular.svg"),
+  arrow: require("./arrow.svg"),
+  babel: require("./babel.svg"),
+  backbone: require("./backbone.svg"),
+  blackBox: require("./blackBox.svg"),
+  breadcrumb: require("./breadcrumbs-divider.svg"),
+  breakpoint: require("./breakpoint.svg"),
+  "column-breakpoint": require("./column-breakpoint.svg"),
+  "column-marker": require("./column-marker.svg"),
+  "case-match": require("./case-match.svg"),
+  choo: require("./choo.svg"),
+  close: require("./close.svg"),
+  coffeescript: require(`./coffeescript.svg`),
+  dojo: require("./dojo.svg"),
+  domain: require("./domain.svg"),
+  extension: require("./extension.svg"),
+  file: require("./file.svg"),
+  folder: require("./folder.svg"),
+  globe: require("./globe.svg"),
+  home: require("./home.svg"),
+  javascript: require("./javascript.svg"),
+  jquery: require("./jquery.svg"),
+  underscore: require("./underscore.svg"),
+  lodash: require("./lodash.svg"),
+  ember: require("./ember.svg"),
+  vuejs: require("./vuejs.svg"),
+  "magnifying-glass": require("./magnifying-glass.svg"),
+  "arrow-up": require("./arrow-up.svg"),
+  "arrow-down": require("./arrow-down.svg"),
+  pause: require("./pause.svg"),
+  "pause-exceptions": require("./pause-exceptions.svg"),
+  plus: require("./plus.svg"),
+  preact: require("./preact.svg"),
+  aframe: require("./aframe.svg"),
+  prettyPrint: require("./prettyPrint.svg"),
+  react: require("./react.svg"),
+  "regex-match": require("./regex-match.svg"),
+  redux: require("./redux.svg"),
+  immutable: require("./immutable.svg"),
+  resume: require("./resume.svg"),
+  settings: require("./settings.svg"),
+  stepIn: require("./stepIn.svg"),
+  stepOut: require("./stepOut.svg"),
+  stepOver: require("./stepOver.svg"),
+  subSettings: require("./subSettings.svg"),
+  tab: require("./tab.svg"),
+  toggleBreakpoints: require("./toggle-breakpoints.svg"),
+  togglePanes: require("./toggle-panes.svg"),
+  typescript: require("./typescript.svg"),
+  "whole-word-match": require("./whole-word-match.svg"),
+  worker: require("./worker.svg"),
+  "sad-face": require("devtools-mc-assets/assets/devtools/client/themes/images/sad-face.svg"),
+  refresh: require("devtools-mc-assets/assets/devtools/client/themes/images/reload.svg"),
+  webpack: require("./webpack.svg"),
+  node: require("./node.svg"),
+  express: require("./express.svg"),
+  pug: require("./pug.svg"),
+  extjs: require("./sencha-extjs.svg"),
+  mobx: require("./mobx.svg"),
+  marko: require("./marko.svg"),
+  nextjs: require("./nextjs.svg"),
+  showSources: require("./showSources.svg"),
+  showOutline: require("./showOutline.svg"),
+  nuxtjs: require("./nuxtjs.svg"),
+  rxjs: require("./rxjs.svg"),
+  loader: require('./loader.svg')
+};
+
+type SvgType = {
+  name: string,
+  className?: string,
+  onClick?: () => void,
+  "aria-label"?: string
+};
+
+function Svg({ name, className, onClick, "aria-label": ariaLabel }) {
+  if (!svg[name]) {
+    const error = `Unknown SVG: ${name}`;
+    console.warn(error);
+    return null;
+  }
+
+  className = `${name} ${className || ""}`;
+  if (name === "subSettings") {
+    className = "";
+  }
+
+  const props = {
+    className,
+    onClick,
+    ["aria-label"]: ariaLabel,
+    src: svg[name]
+  };
+
+  return <InlineSVG {...props} />;
+}
+
+Svg.displayName = "Svg";
+
+module.exports = Svg;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/jest-test.config.js
@@ -0,0 +1,40 @@
+/* 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/>. */
+
+const { resolve } = require("path");
+const rootDir = resolve(__dirname);
+module.exports = {
+  rootDir,
+  displayName: "test",
+  testURL: "http://localhost/",
+  testPathIgnorePatterns: [
+    "/node_modules/",
+    "/helpers/",
+    "/fixtures/",
+    "src/test/mochitest/examples/",
+    "<rootDir>/firefox",
+    "package.json",
+    "<rootDir>/packages"
+  ],
+  modulePathIgnorePatterns: ["src/test/mochitest", "firefox"],
+  collectCoverageFrom: [
+    "src/**/*.js",
+    "!src/**/fixtures/*.js",
+    "!src/test/**/*.js",
+    "!src/components/stories/**/*.js",
+    "!**/*.mock.js",
+    "!**/*.spec.js"
+  ],
+  transformIgnorePatterns: ["node_modules/(?!devtools-)"],
+  setupTestFrameworkScriptFile: "<rootDir>/src/test/tests-setup.js",
+  setupFiles: ["<rootDir>/src/test/shim.js", "jest-localstorage-mock"],
+  snapshotSerializers: [
+    "jest-serializer-babel-ast",
+    "enzyme-to-json/serializer"
+  ],
+  moduleNameMapper: {
+    "\\.css$": "<rootDir>/src/test/__mocks__/styleMock.js",
+    "\\.svg$": "<rootDir>/src/test/__mocks__/svgMock.js"
+  }
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/jest.config.js
@@ -0,0 +1,14 @@
+/* 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/>. */
+
+const { resolve } = require("path");
+const rootDir = resolve(__dirname);
+module.exports = {
+  rootDir,
+  reporters: ["default"],
+  projects: [
+    "<rootDir>/jest-test.config.js",
+    "<rootDir>/packages/*/jest.config.js"
+  ]
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/package.json
@@ -0,0 +1,137 @@
+{
+  "name": "debugger.html",
+  "version": "0.6.0",
+  "license": "MPL-2.0",
+  "repository": {
+    "url": "git://github.com/devtools-html/debugger.html.git",
+    "type": "git"
+  },
+  "bugs": {
+    "url": "https://github.com/devtools-html/debugger.html/issues"
+  },
+  "homepage": "https://github.com/devtools-html/debugger.html#readme",
+  "engineStrict": true,
+  "engines": {
+    "node": ">=7.7.0"
+  },
+  "scripts": {
+  },
+  "dependencies": {
+    "@babel/core": "^7.0.0-beta.55",
+    "@babel/parser": "^7.0.0-beta.55",
+    "@babel/template": "^7.0.0-beta.55",
+    "@babel/types": "^7.0.0-beta.55",
+    "babel-plugin-transform-imports": "^1.5.0",
+    "codemirror": "^5.28.0",
+    "devtools-environment": "^0.0.6",
+    "devtools-launchpad": "^0.0.141",
+    "devtools-linters": "^0.0.4",
+    "devtools-reps": "0.23.0",
+    "devtools-source-map": "0.16.0",
+    "devtools-splitter": "^0.0.8",
+    "devtools-utils": "0.0.14",
+    "fuzzaldrin-plus": "^0.6.0",
+    "immutable": "^3.8.2",
+    "lodash": "^4.17.4",
+    "lodash-move": "^1.1.1",
+    "lodash.kebabcase": "^4.1.1",
+    "md5": "^2.2.1",
+    "parse-script-tags": "^0.1.6",
+    "pretty-fast": "^0.2.3",
+    "prop-types": "^15.6.0",
+    "react": "16.4.1",
+    "react-aria-components": "^0.0.4",
+    "react-dom": "16.4.1",
+    "react-immutable-proptypes": "^2.1.0",
+    "react-inlinesvg": "^0.8.1",
+    "react-redux": "^5.0.7",
+    "react-transition-group": "^2.2.1",
+    "reselect": "^4.0.0",
+    "svg-inline-react": "^3.0.0",
+    "wasmparser": "^0.7.0"
+  },
+  "private": true,
+  "workspaces": [
+    "packages/*"
+  ],
+  "files": [
+    "src",
+    "assets"
+  ],
+  "greenkeeper": {
+    "ignore": [
+      "react",
+      "react-dom",
+      "react-redux",
+      "redux",
+      "codemirror"
+    ]
+  },
+  "main": "src/main.js",
+  "author": "Jason Laster <jlaster@mozilla.com>",
+  "devDependencies": {
+    "@sucrase/webpack-object-rest-spread-plugin": "^1.0.0",
+    "babel-eslint": "^10.0.1",
+    "babel-jest": "^23.0.0",
+    "babel-plugin-syntax-object-rest-spread": "^6.13.0",
+    "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
+    "babel-plugin-transform-class-properties": "^6.24.1",
+    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
+    "babel-preset-env": "^1.6.1",
+    "babel-preset-react": "^6.24.1",
+    "chalk": "^2.1.0",
+    "copy-paste": "^1.3.0",
+    "copy-webpack-plugin": "^4.5.2",
+    "devtools-license-check": "^0.7.0",
+    "enzyme": "^3.3.0",
+    "enzyme-adapter-react-16": "^1.1.1",
+    "enzyme-to-json": "3.3.4",
+    "eslint": "^5.0.0",
+    "eslint-config-prettier": "^3.0.0",
+    "eslint-plugin-babel": "^5.0.0",
+    "eslint-plugin-file-header": "0.0.1",
+    "eslint-plugin-flowtype": "^3.0.0",
+    "eslint-plugin-import": "^2.8.0",
+    "eslint-plugin-jest": "^21.15.1",
+    "eslint-plugin-jsx-a11y": "^6.1.2",
+    "eslint-plugin-mozilla": "1.0.4",
+    "eslint-plugin-prettier": "^3.0.0",
+    "eslint-plugin-react": "^7.2.1",
+    "expect.js": "^0.3.1",
+    "flow-bin": "^0.89.0",
+    "glob": "^7.0.3",
+    "husky": "^1.0.1",
+    "jest": "^23.0.0",
+    "jest-environment-jsdom": "^23.0.0",
+    "jest-in-case": "^1.0.2",
+    "jest-junit": "^5.0.0",
+    "jest-localstorage-mock": "^2.2.0",
+    "jest-serializer-babel-ast": "^0.0.5",
+    "lint-staged": "^8.0.0",
+    "mochii": "^0.0.32",
+    "mock-require": "^3.0.0",
+    "node-emoji": "^1.8.1",
+    "npm-run-all": "^4.0.2",
+    "prettier": "^1.12.1",
+    "pretty-quick": "^1.4.1",
+    "remark-cli": "^6.0.0",
+    "remark-lint": "^6.0.1",
+    "remark-lint-list-item-bullet-indent": "^1.0.1",
+    "remark-lint-list-item-indent": "^1.0.1",
+    "remark-lint-no-shortcut-reference-image": "^1.0.1",
+    "remark-lint-no-shortcut-reference-link": "^1.0.2",
+    "remark-lint-no-table-indentation": "^1.0.0",
+    "remark-lint-no-unused-definitions": "^1.0.1",
+    "remark-lint-ordered-list-marker-style": "^1.0.1",
+    "remark-lint-table-cell-padding": "^1.0.0",
+    "remark-lint-table-pipes": "^1.0.0",
+    "remark-preset-lint-recommended": "^3.0.0",
+    "remark-validate-links": "^7.0.0",
+    "rimraf": "^2.6.1",
+    "single-line-log": "^1.1.2",
+    "stylelint": "^9.0.0",
+    "webpack": "^3.5.5",
+    "webpack-visualizer-plugin": "^0.1.11",
+    "workerjs": "github:jasonLaster/workerjs#a2425aaeebacae7a7640e496a54c2a41962f3890"
+  }
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/.babelrc
@@ -0,0 +1,7 @@
+{
+  "presets": ["react", "flow"],
+  "plugins": [
+    "transform-es2015-modules-commonjs",
+    "transform-flow-strip-types"
+  ]
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/.storybook/config.js
@@ -0,0 +1,11 @@
+/* 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/. */
+
+const { configure } = require("@storybook/react");
+
+function loadStories() {
+  require("../stories/index");
+}
+
+configure(loadStories, module);
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/.storybook/webpack.config.js
@@ -0,0 +1,5 @@
+/* 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/. */
+
+module.exports = require("../webpack.config.js");
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/LICENSE
@@ -0,0 +1,362 @@
+Mozilla Public License, version 2.0
+
+1. Definitions
+
+1.1. "Contributor"
+
+     means each individual or legal entity that creates, contributes to the
+     creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+
+     means the combination of the Contributions of others (if any) used by a
+     Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+
+     means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+
+     means Source Code Form to which the initial Contributor has attached the
+     notice in Exhibit A, the Executable Form of such Source Code Form, and
+     Modifications of such Source Code Form, in each case including portions
+     thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+     means
+
+     a. that the initial Contributor has attached the notice described in
+        Exhibit B to the Covered Software; or
+
+     b. that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the terms of
+        a Secondary License.
+
+1.6. "Executable Form"
+
+     means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+
+     means a work that combines Covered Software with other material, in a
+     separate file or files, that is not Covered Software.
+
+1.8. "License"
+
+     means this document.
+
+1.9. "Licensable"
+
+     means having the right to grant, to the maximum extent possible, whether
+     at the time of the initial grant or subsequently, any and all of the
+     rights conveyed by this License.
+
+1.10. "Modifications"
+
+     means any of the following:
+
+     a. any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered Software; or
+
+     b. any new file in Source Code Form that contains any Covered Software.
+
+1.11. "Patent Claims" of a Contributor
+
+      means any patent claim(s), including without limitation, method,
+      process, and apparatus claims, in any patent Licensable by such
+      Contributor that would be infringed, but for the grant of the License,
+      by the making, using, selling, offering for sale, having made, import,
+      or transfer of either its Contributions or its Contributor Version.
+
+1.12. "Secondary License"
+
+      means either the GNU General Public License, Version 2.0, the GNU Lesser
+      General Public License, Version 2.1, the GNU Affero General Public
+      License, Version 3.0, or any later versions of those licenses.
+
+1.13. "Source Code Form"
+
+      means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+
+      means an individual or a legal entity exercising rights under this
+      License. For legal entities, "You" includes any entity that controls, is
+      controlled by, or is under common control with You. For purposes of this
+      definition, "control" means (a) the power, direct or indirect, to cause
+      the direction or management of such entity, whether by contract or
+      otherwise, or (b) ownership of more than fifty percent (50%) of the
+      outstanding shares or beneficial ownership of such entity.
+
+
+2. License Grants and Conditions
+
+2.1. Grants
+
+     Each Contributor hereby grants You a world-wide, royalty-free,
+     non-exclusive license:
+
+     a. under intellectual property rights (other than patent or trademark)
+        Licensable by such Contributor to use, reproduce, make available,
+        modify, display, perform, distribute, and otherwise exploit its
+        Contributions, either on an unmodified basis, with Modifications, or
+        as part of a Larger Work; and
+
+     b. under Patent Claims of such Contributor to make, use, sell, offer for
+        sale, have made, import, and otherwise transfer either its
+        Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+     The licenses granted in Section 2.1 with respect to any Contribution
+     become effective for each Contribution on the date the Contributor first
+     distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+     The licenses granted in this Section 2 are the only rights granted under
+     this License. No additional rights or licenses will be implied from the
+     distribution or licensing of Covered Software under this License.
+     Notwithstanding Section 2.1(b) above, no patent license is granted by a
+     Contributor:
+
+     a. for any code that a Contributor has removed from Covered Software; or
+
+     b. for infringements caused by: (i) Your and any other third party's
+        modifications of Covered Software, or (ii) the combination of its
+        Contributions with other software (except as part of its Contributor
+        Version); or
+
+     c. under Patent Claims infringed by Covered Software in the absence of
+        its Contributions.
+
+     This License does not grant any rights in the trademarks, service marks,
+     or logos of any Contributor (except as may be necessary to comply with
+     the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+     No Contributor makes additional grants as a result of Your choice to
+     distribute the Covered Software under a subsequent version of this
+     License (see Section 10.2) or under the terms of a Secondary License (if
+     permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+     Each Contributor represents that the Contributor believes its
+     Contributions are its original creation(s) or it has sufficient rights to
+     grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+     This License is not intended to limit any rights You have under
+     applicable copyright doctrines of fair use, fair dealing, or other
+     equivalents.
+
+2.7. Conditions
+
+     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
+     Section 2.1.
+
+
+3. Responsibilities
+
+3.1. Distribution of Source Form
+
+     All distribution of Covered Software in Source Code Form, including any
+     Modifications that You create or to which You contribute, must be under
+     the terms of this License. You must inform recipients that the Source
+     Code Form of the Covered Software is governed by the terms of this
+     License, and how they can obtain a copy of this License. You may not
+     attempt to alter or restrict the recipients' rights in the Source Code
+     Form.
+
+3.2. Distribution of Executable Form
+
+     If You distribute Covered Software in Executable Form then:
+
+     a. such Covered Software must also be made available in Source Code Form,
+        as described in Section 3.1, and You must inform recipients of the
+        Executable Form how they can obtain a copy of such Source Code Form by
+        reasonable means in a timely manner, at a charge no more than the cost
+        of distribution to the recipient; and
+
+     b. You may distribute such Executable Form under the terms of this
+        License, or sublicense it under different terms, provided that the
+        license for the Executable Form does not attempt to limit or alter the
+        recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+     You may create and distribute a Larger Work under terms of Your choice,
+     provided that You also comply with the requirements of this License for
+     the Covered Software. If the Larger Work is a combination of Covered
+     Software with a work governed by one or more Secondary Licenses, and the
+     Covered Software is not Incompatible With Secondary Licenses, this
+     License permits You to additionally distribute such Covered Software
+     under the terms of such Secondary License(s), so that the recipient of
+     the Larger Work may, at their option, further distribute the Covered
+     Software under the terms of either this License or such Secondary
+     License(s).
+
+3.4. Notices
+
+     You may not remove or alter the substance of any license notices
+     (including copyright notices, patent notices, disclaimers of warranty, or
+     limitations of liability) contained within the Source Code Form of the
+     Covered Software, except that You may alter any license notices to the
+     extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+     You may choose to offer, and to charge a fee for, warranty, support,
+     indemnity or liability obligations to one or more recipients of Covered
+     Software. However, You may do so only on Your own behalf, and not on
+     behalf of any Contributor. You must make it absolutely clear that any
+     such warranty, support, indemnity, or liability obligation is offered by
+     You alone, and You hereby agree to indemnify every Contributor for any
+     liability incurred by such Contributor as a result of warranty, support,
+     indemnity or liability terms You offer. You may include additional
+     disclaimers of warranty and limitations of liability specific to any
+     jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+
+   If it is impossible for You to comply with any of the terms of this License
+   with respect to some or all of the Covered Software due to statute,
+   judicial order, or regulation then You must: (a) comply with the terms of
+   this License to the maximum extent possible; and (b) describe the
+   limitations and the code they affect. Such description must be placed in a
+   text file included with all distributions of the Covered Software under
+   this License. Except to the extent prohibited by statute or regulation,
+   such description must be sufficiently detailed for a recipient of ordinary
+   skill to be able to understand it.
+
+5. Termination
+
+5.1. The rights granted under this License will terminate automatically if You
+     fail to comply with any of its terms. However, if You become compliant,
+     then the rights granted under this License from a particular Contributor
+     are reinstated (a) provisionally, unless and until such Contributor
+     explicitly and finally terminates Your grants, and (b) on an ongoing
+     basis, if such Contributor fails to notify You of the non-compliance by
+     some reasonable means prior to 60 days after You have come back into
+     compliance. Moreover, Your grants from a particular Contributor are
+     reinstated on an ongoing basis if such Contributor notifies You of the
+     non-compliance by some reasonable means, this is the first time You have
+     received notice of non-compliance with this License from such
+     Contributor, and You become compliant prior to 30 days after Your receipt
+     of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+     infringement claim (excluding declaratory judgment actions,
+     counter-claims, and cross-claims) alleging that a Contributor Version
+     directly or indirectly infringes any patent, then the rights granted to
+     You by any and all Contributors for the Covered Software under Section
+     2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
+     license agreements (excluding distributors and resellers) which have been
+     validly granted by You or Your distributors under this License prior to
+     termination shall survive termination.
+
+6. Disclaimer of Warranty
+
+   Covered Software is provided under this License on an "as is" basis,
+   without warranty of any kind, either expressed, implied, or statutory,
+   including, without limitation, warranties that the Covered Software is free
+   of defects, merchantable, fit for a particular purpose or non-infringing.
+   The entire risk as to the quality and performance of the Covered Software
+   is with You. Should any Covered Software prove defective in any respect,
+   You (not any Contributor) assume the cost of any necessary servicing,
+   repair, or correction. This disclaimer of warranty constitutes an essential
+   part of this License. No use of  any Covered Software is authorized under
+   this License except under this disclaimer.
+
+7. Limitation of Liability
+
+   Under no circumstances and under no legal theory, whether tort (including
+   negligence), contract, or otherwise, shall any Contributor, or anyone who
+   distributes Covered Software as permitted above, be liable to You for any
+   direct, indirect, special, incidental, or consequential damages of any
+   character including, without limitation, damages for lost profits, loss of
+   goodwill, work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses, even if such party shall have been
+   informed of the possibility of such damages. This limitation of liability
+   shall not apply to liability for death or personal injury resulting from
+   such party's negligence to the extent applicable law prohibits such
+   limitation. Some jurisdictions do not allow the exclusion or limitation of
+   incidental or consequential damages, so this exclusion and limitation may
+   not apply to You.
+
+8. Litigation
+
+   Any litigation relating to this License may be brought only in the courts
+   of a jurisdiction where the defendant maintains its principal place of
+   business and such litigation shall be governed by laws of that
+   jurisdiction, without reference to its conflict-of-law provisions. Nothing
+   in this Section shall prevent a party's ability to bring cross-claims or
+   counter-claims.
+
+9. Miscellaneous
+
+   This License represents the complete agreement concerning the subject
+   matter hereof. If any provision of this License is held to be
+   unenforceable, such provision shall be reformed only to the extent
+   necessary to make it enforceable. Any law or regulation which provides that
+   the language of a contract shall be construed against the drafter shall not
+   be used to construe this License against a Contributor.
+
+
+10. Versions of the License
+
+10.1. New Versions
+
+      Mozilla Foundation is the license steward. Except as provided in Section
+      10.3, no one other than the license steward has the right to modify or
+      publish new versions of this License. Each version will be given a
+      distinguishing version number.
+
+10.2. Effect of New Versions
+
+      You may distribute the Covered Software under the terms of the version
+      of the License under which You originally received the Covered Software,
+      or under the terms of any subsequent version published by the license
+      steward.
+
+10.3. Modified Versions
+
+      If you create software not governed by this License, and you want to
+      create a new license for such software, you may create and use a
+      modified version of this License if you rename the license and remove
+      any references to the name of the license steward (except to note that
+      such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+      Licenses If You choose to distribute Source Code Form that is
+      Incompatible With Secondary Licenses under the terms of this version of
+      the License, the notice described in Exhibit B of this License must be
+      attached.
+
+Exhibit A - Source Code Form License Notice
+
+      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/.
+
+If it is not possible or desirable to put the notice in a particular file,
+then You may include the notice in a location (such as a LICENSE file in a
+relevant directory) where a recipient would be likely to look for such a
+notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+
+      This Source Code Form is "Incompatible
+      With Secondary Licenses", as defined by
+      the Mozilla Public License, v. 2.0.
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/README.md
@@ -0,0 +1,5 @@
+## Devtools Components
+
+Devtools shared Components
+
+* _Tree_ - A performant tree
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/index.js
@@ -0,0 +1,9 @@
+/* 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 Tree from "./src/tree";
+
+module.exports = {
+  Tree
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/jest.config.js
@@ -0,0 +1,20 @@
+const { resolve } = require("path");
+const rootDir = resolve(__dirname, "src");
+module.exports = {
+  rootDir,
+  displayName: "devtools-components test",
+  setupFiles: [
+    "<rootDir>/../../../src/test/__mocks__/request-animation-frame.js",
+    "<rootDir>/tests/setup.js"
+  ],
+  testMatch: ["**/tests/**/*.js"],
+  testPathIgnorePatterns: [
+    "/node_modules/",
+    "<rootDir>/tests/__mocks__/",
+    "<rootDir>/tests/setup.js"
+  ],
+  testURL: "http://localhost/",
+  moduleNameMapper: {
+    "\\.css$": "<rootDir>/../../../src/test/__mocks__/styleMock.js"
+  }
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/package.json
@@ -0,0 +1,33 @@
+{
+  "name": "devtools-components",
+  "version": "0.6.0",
+  "description": "DevTools HTML Components",
+  "main": "index.js",
+  "scripts": {
+    "copy-assets": "node bin/copy-assets",
+    "license-check": "devtools-license-check",
+    "storybook":
+      "NODE_ENV=storybook start-storybook -p 9002 -c .storybook -s ./src",
+    "test": "jest --projects jest.config.js"
+  },
+  "author": "Jason Laster",
+  "license": "MPL-2.0",
+  "dependencies": {
+    "prop-types": "^15.6.0",
+    "react": "^16.4.1",
+    "react-dom": "^16.4.1",
+    "react-dom-factories": "^1.0.2"
+  },
+  "devDependencies": {
+    "@storybook/react": "^3.3.14",
+    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
+    "babel-preset-react": "^6.24.1",
+    "devtools-license-check": "^0.7.0",
+    "enzyme": "^3.3.0",
+    "enzyme-adapter-react-16": "^1.1.1",
+    "eslint": "^5.0.0",
+    "eslint-plugin-mozilla": "1.0.4",
+    "fs-extra": "^7.0.0",
+    "lodash": "^4.17.2"
+  }
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/postcss.config.js
@@ -0,0 +1,37 @@
+/* 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/. */
+
+const mapUrl = require("postcss-url-mapper");
+const MC_PATH = "resource://devtools/client/debugger/new/images/";
+const EXPRESS_PATH = "/devtools-components/images/";
+
+function mapUrlProduction(url, type) {
+  return url.replace("/images/arrow.svg", MC_PATH + "arrow.svg");
+}
+
+function mapUrlDevelopment(url) {
+  return url.replace("/images/arrow.svg", EXPRESS_PATH + "arrow.svg");
+}
+
+module.exports = ({ file, options, env }) => {
+  // Here we don't want to do anything for storybook since we serve the images thanks
+  // to the `-s ./src` option in the `storybook` command (see package.json).
+  if (env === "storybook") {
+    return {};
+  }
+
+  // This will be used when creating a bundle for mozilla-central (from devtools-reps
+  // or debugger.html).
+  if (env === "production") {
+    return {
+      plugins: [mapUrl(mapUrlProduction)]
+    };
+  }
+
+  // This will be used when using this module in launchpad mode. We set a unique path so
+  // we can serve images from express.
+  return {
+    plugins: [mapUrl(mapUrlDevelopment)]
+  };
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/src/images/arrow.svg
@@ -0,0 +1,6 @@
+<!-- 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/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="context-fill #9B9B9B">
+  <path d="M8 13.4c-.5 0-.9-.2-1.2-.6L.4 5.2C0 4.7-.1 4.3.2 3.7S1 3 1.6 3h12.8c.6 0 1.2.1 1.4.7.3.6.2 1.1-.2 1.6l-6.4 7.6c-.3.4-.7.5-1.2.5z"/>
+</svg>
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/src/tests/__snapshots__/tree.js.snap
@@ -0,0 +1,908 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Tree Don't auto expand root with very large number of children 1`] = `
+Array [
+  "key-A",
+  "key-B",
+  "key-E",
+  "key-F",
+  "key-G",
+  "key-C",
+  "key-H",
+  "key-I",
+  "key-D",
+  "key-J",
+  "key-M",
+  "key-N",
+]
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 1`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 2`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 3`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 4`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 5`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 6`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 7`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 8`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 9`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 10`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 11`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 12`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 13`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 14`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 15`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 16`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree ignores key strokes when pressing modifiers 17`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders arrows as expected when nodes are collapsed 1`] = `
+"
+▶︎ A
+▶︎ M
+"
+`;
+
+exports[`Tree renders arrows as expected when nodes are expanded 1`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected 1`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected navigating down with keyboard on last node 1`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    [O]
+"
+`;
+
+exports[`Tree renders as expected navigating down with keyboard on last node 2`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    [O]
+"
+`;
+
+exports[`Tree renders as expected navigating up with the keyboard on a root 1`] = `
+"
+▼ [A]
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected navigating up with the keyboard on a root 2`] = `
+"
+▼ [A]
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected navigating with arrows on unexpandable roots 1`] = `
+"
+  [A]
+  M
+"
+`;
+
+exports[`Tree renders as expected navigating with arrows on unexpandable roots 2`] = `
+"
+  A
+  [M]
+"
+`;
+
+exports[`Tree renders as expected navigating with arrows on unexpandable roots 3`] = `
+"
+  [A]
+  M
+"
+`;
+
+exports[`Tree renders as expected when given a focused item 1`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    [G]
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when given a focused item 2`] = `
+"
+▶︎ [A]
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when given a focused item 3`] = `
+"
+▼ [A]
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when given a focused item 4`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating down with the keyboard 1`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    [K]
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating down with the keyboard 2`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating down with the keyboard 3`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    L
+|  |    [F]
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating up with the keyboard 1`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating up with the keyboard 2`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    [K]
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating up with the keyboard 3`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ [E]
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 1`] = `
+"
+▶︎ A
+▶︎ [M]
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 2`] = `
+"
+▶︎ [A]
+▶︎ M
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 3`] = `
+"
+▶︎ [A]
+▶︎ M
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 4`] = `
+"
+▶︎ A
+▶︎ [M]
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 5`] = `
+"
+▶︎ A
+▶︎ [M]
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 6`] = `
+"
+▶︎ A
+▼ [M]
+|  ▶︎ N
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 7`] = `
+"
+▶︎ A
+▼ M
+|  ▶︎ [N]
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 8`] = `
+"
+▶︎ A
+▼ M
+|  ▶︎ [N]
+"
+`;
+
+exports[`Tree renders as expected when navigating with home/end 9`] = `
+"
+▶︎ [A]
+▼ M
+|  ▶︎ N
+"
+`;
+
+exports[`Tree renders as expected when navigating with left arrows on roots 1`] = `
+"
+▶︎ A
+▶︎ [M]
+"
+`;
+
+exports[`Tree renders as expected when navigating with left arrows on roots 2`] = `
+"
+▶︎ [A]
+▶︎ M
+"
+`;
+
+exports[`Tree renders as expected when navigating with left arrows on roots 3`] = `
+"
+▶︎ [A]
+▶︎ M
+"
+`;
+
+exports[`Tree renders as expected when navigating with right/left arrows 1`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    K
+|  |  |    [L]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating with right/left arrows 2`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ [E]
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating with right/left arrows 3`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▶︎ [E]
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating with right/left arrows 4`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ [E]
+|  |  |    K
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when navigating with right/left arrows 5`] = `
+"
+▼ A
+|  ▼ B
+|  |  ▼ E
+|  |  |    [K]
+|  |  |    L
+|  |    F
+|  |    G
+|  ▼ C
+|  |    H
+|  |    I
+|  ▼ D
+|  |    J
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree renders as expected when passed autoDepth:1 1`] = `
+"
+▼ A
+|  ▶︎ B
+|  ▶︎ C
+|  ▶︎ D
+▼ M
+|  ▶︎ N
+"
+`;
+
+exports[`Tree renders as expected with collapsed nodes 1`] = `
+"
+▶︎ A
+▼ M
+|  ▼ N
+|  |    O
+"
+`;
+
+exports[`Tree uses isExpandable prop if it exists to render tree nodes 1`] = `
+"
+▶︎ A
+  M
+"
+`;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/src/tests/setup.js
@@ -0,0 +1,8 @@
+/* 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/>. */
+
+// Configure enzyme with React 16 adapter.
+const Enzyme = require("enzyme");
+const Adapter = require("enzyme-adapter-react-16");
+Enzyme.configure({ adapter: new Adapter() });
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/src/tests/tree.js
@@ -0,0 +1,762 @@
+/* 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/>. */
+
+/* global jest */
+
+import React from "react";
+import { mount } from "enzyme";
+import Components from "../../index";
+import dom from "react-dom-factories";
+
+const { Component, createFactory } = React;
+const Tree = createFactory(Components.Tree);
+
+function mountTree(overrides = {}) {
+  return mount(
+    createFactory(
+      class container extends Component {
+        constructor(props) {
+          super(props);
+          const state = {
+            expanded: overrides.expanded || new Set(),
+            focused: overrides.focused
+          };
+          delete overrides.focused;
+          this.state = state;
+        }
+
+        render() {
+          return Tree(
+            Object.assign(
+              {
+                getParent: x => TEST_TREE.parent[x],
+                getChildren: x => TEST_TREE.children[x],
+                renderItem: (x, depth, focused, arrow) => {
+                  return dom.div(
+                    {},
+                    arrow,
+                    focused ? "[" : null,
+                    x,
+                    focused ? "]" : null
+                  );
+                },
+                getRoots: () => ["A", "M"],
+                getKey: x => `key-${x}`,
+                itemHeight: 1,
+                onFocus: x => {
+                  this.setState(previousState => {
+                    return { focused: x };
+                  });
+                },
+                onExpand: x => {
+                  this.setState(previousState => {
+                    const expanded = new Set(previousState.expanded);
+                    expanded.add(x);
+                    return { expanded };
+                  });
+                },
+                onCollapse: x => {
+                  this.setState(previousState => {
+                    const expanded = new Set(previousState.expanded);
+                    expanded.delete(x);
+                    return { expanded };
+                  });
+                },
+                isExpanded: x => this.state && this.state.expanded.has(x),
+                focused: this.state.focused
+              },
+              overrides
+            )
+          );
+        }
+      }
+    )()
+  );
+}
+
+describe("Tree", () => {
+  it("does not throw", () => {
+    expect(mountTree()).toBeTruthy();
+  });
+
+  it("Don't auto expand root with very large number of children", () => {
+    const children = Array.from(
+      { length: 51 },
+      (_, i) => `should-not-be-visible-${i + 1}`
+    );
+    // N has a lot of children, so it won't be automatically expanded
+    const wrapper = mountTree({
+      autoExpandDepth: 2,
+      autoExpandNodeChildrenLimit: 50,
+      getChildren: item => {
+        if (item === "N") {
+          return children;
+        }
+
+        return TEST_TREE.children[item] || [];
+      }
+    });
+    const ids = getTreeNodes(wrapper).map(node => node.prop("id"));
+    expect(ids).toMatchSnapshot();
+  });
+
+  it("is accessible", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJMN".split(""))
+    });
+    expect(wrapper.getDOMNode().getAttribute("role")).toBe("tree");
+    expect(wrapper.getDOMNode().getAttribute("tabIndex")).toBe("0");
+
+    const expected = {
+      A: { id: "key-A", level: 1, expanded: true },
+      B: { id: "key-B", level: 2, expanded: true },
+      C: { id: "key-C", level: 2, expanded: true },
+      D: { id: "key-D", level: 2, expanded: true },
+      E: { id: "key-E", level: 3, expanded: true },
+      F: { id: "key-F", level: 3, expanded: true },
+      G: { id: "key-G", level: 3, expanded: true },
+      H: { id: "key-H", level: 3, expanded: true },
+      I: { id: "key-I", level: 3, expanded: true },
+      J: { id: "key-J", level: 3, expanded: true },
+      K: { id: "key-K", level: 4, expanded: undefined },
+      L: { id: "key-L", level: 4, expanded: undefined },
+      M: { id: "key-M", level: 1, expanded: true },
+      N: { id: "key-N", level: 2, expanded: true },
+      O: { id: "key-O", level: 3, expanded: undefined }
+    };
+
+    getTreeNodes(wrapper).forEach(node => {
+      const key = node.prop("id").replace("key-", "");
+      const item = expected[key];
+
+      expect(node.prop("id")).toBe(item.id);
+      expect(node.prop("role")).toBe("treeitem");
+      expect(node.prop("aria-level")).toBe(item.level);
+      expect(node.prop("aria-expanded")).toBe(item.expanded);
+    });
+  });
+
+  it("renders as expected", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split(""))
+    });
+
+    expect(formatTree(wrapper)).toMatchSnapshot();
+  });
+
+  it("renders as expected when passed a className", () => {
+    const wrapper = mountTree({
+      className: "testClassName"
+    });
+
+    expect(wrapper.find(".tree").hasClass("testClassName")).toBe(true);
+  });
+
+  it("renders as expected when passed a style", () => {
+    const wrapper = mountTree({
+      style: {
+        color: "red"
+      }
+    });
+
+    expect(wrapper.getDOMNode().style.color).toBe("red");
+  });
+
+  it("renders as expected when passed a label", () => {
+    const wrapper = mountTree({
+      label: "testAriaLabel"
+    });
+    expect(wrapper.getDOMNode().getAttribute("aria-label")).toBe(
+      "testAriaLabel"
+    );
+  });
+
+  it("renders as expected when passed an aria-labelledby", () => {
+    const wrapper = mountTree({
+      labelledby: "testAriaLabelBy"
+    });
+    expect(wrapper.getDOMNode().getAttribute("aria-labelledby")).toBe(
+      "testAriaLabelBy"
+    );
+  });
+
+  it("renders as expected with collapsed nodes", () => {
+    const wrapper = mountTree({
+      expanded: new Set("MNO".split(""))
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+  });
+
+  it("renders as expected when passed autoDepth:1", () => {
+    const wrapper = mountTree({
+      autoExpandDepth: 1
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+  });
+
+  it("renders as expected when given a focused item", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "G"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-G"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-G");
+
+    getTreeNodes(wrapper)
+      .first()
+      .simulate("click");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+
+    getTreeNodes(wrapper)
+      .first()
+      .simulate("click");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+
+    wrapper.simulate("blur");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().hasAttribute("aria-activedescendant")).toBe(
+      false
+    );
+    expect(wrapper.find(".focused").exists()).toBe(false);
+  });
+
+  it("renders as expected when navigating up with the keyboard", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "L"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-L"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-L");
+
+    simulateKeyDown(wrapper, "ArrowUp");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-K"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-K");
+
+    simulateKeyDown(wrapper, "ArrowUp");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-E"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-E");
+  });
+
+  it("renders as expected navigating up with the keyboard on a root", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "A"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+
+    simulateKeyDown(wrapper, "ArrowUp");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+  });
+
+  it("renders as expected when navigating down with the keyboard", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "K"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-K"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-K");
+
+    simulateKeyDown(wrapper, "ArrowDown");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-L"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-L");
+
+    simulateKeyDown(wrapper, "ArrowDown");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-F"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-F");
+  });
+
+  it("renders as expected navigating down with keyboard on last node", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "O"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-O"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-O");
+
+    simulateKeyDown(wrapper, "ArrowDown");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-O"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-O");
+  });
+
+  it("renders as expected when navigating with right/left arrows", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "L"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-L"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-L");
+
+    simulateKeyDown(wrapper, "ArrowLeft");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-E"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-E");
+
+    simulateKeyDown(wrapper, "ArrowLeft");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-E"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-E");
+
+    simulateKeyDown(wrapper, "ArrowRight");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-E"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-E");
+
+    simulateKeyDown(wrapper, "ArrowRight");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-K"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-K");
+  });
+
+  it("renders as expected when navigating with left arrows on roots", () => {
+    const wrapper = mountTree({
+      focused: "M"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-M"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-M");
+
+    simulateKeyDown(wrapper, "ArrowLeft");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+
+    simulateKeyDown(wrapper, "ArrowLeft");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+  });
+
+  it("renders as expected when navigating with home/end", () => {
+    const wrapper = mountTree({
+      focused: "M"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-M"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-M");
+
+    simulateKeyDown(wrapper, "Home");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+
+    simulateKeyDown(wrapper, "Home");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+
+    simulateKeyDown(wrapper, "End");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-M"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-M");
+
+    simulateKeyDown(wrapper, "End");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-M"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-M");
+
+    simulateKeyDown(wrapper, "ArrowRight");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-M"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-M");
+
+    simulateKeyDown(wrapper, "End");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-N"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-N");
+
+    simulateKeyDown(wrapper, "End");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-N"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-N");
+
+    simulateKeyDown(wrapper, "Home");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-A");
+  });
+
+  it("renders as expected navigating with arrows on unexpandable roots", () => {
+    const wrapper = mountTree({
+      focused: "A",
+      isExpandable: item => false
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+
+    simulateKeyDown(wrapper, "ArrowRight");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-M"
+    );
+
+    simulateKeyDown(wrapper, "ArrowLeft");
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-A"
+    );
+  });
+
+  it("calls onFocus when expected", () => {
+    const onFocus = jest.fn(x => {
+      wrapper &&
+        wrapper.setState(() => {
+          return { focused: x };
+        });
+    });
+
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "I",
+      onFocus
+    });
+
+    simulateKeyDown(wrapper, "ArrowUp");
+    expect(onFocus.mock.calls[0][0]).toBe("H");
+
+    simulateKeyDown(wrapper, "ArrowUp");
+    expect(onFocus.mock.calls[1][0]).toBe("C");
+
+    simulateKeyDown(wrapper, "ArrowLeft");
+    simulateKeyDown(wrapper, "ArrowLeft");
+    expect(onFocus.mock.calls[2][0]).toBe("A");
+
+    simulateKeyDown(wrapper, "ArrowRight");
+    expect(onFocus.mock.calls[3][0]).toBe("B");
+
+    simulateKeyDown(wrapper, "ArrowDown");
+    expect(onFocus.mock.calls[4][0]).toBe("E");
+  });
+
+  it("focus treeRef when a node is clicked", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split(""))
+    });
+    const treeRef = wrapper
+      .find("Tree")
+      .first()
+      .instance().treeRef;
+    treeRef.focus = jest.fn();
+
+    getTreeNodes(wrapper)
+      .first()
+      .simulate("click");
+    expect(treeRef.focus.mock.calls).toHaveLength(1);
+  });
+
+  it("doesn't focus treeRef when focused is null", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "A"
+    });
+    const treeRef = wrapper
+      .find("Tree")
+      .first()
+      .instance().treeRef;
+    treeRef.focus = jest.fn();
+    wrapper.simulate("blur");
+    expect(treeRef.focus.mock.calls).toHaveLength(0);
+  });
+
+  it("calls onActivate when expected", () => {
+    const onActivate = jest.fn();
+
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "A",
+      onActivate
+    });
+
+    simulateKeyDown(wrapper, "Enter");
+    expect(onActivate.mock.calls).toHaveLength(1);
+    expect(onActivate.mock.calls[0][0]).toBe("A");
+
+    simulateKeyDown(wrapper, "Enter");
+    expect(onActivate.mock.calls).toHaveLength(2);
+    expect(onActivate.mock.calls[1][0]).toBe("A");
+
+    simulateKeyDown(wrapper, "ArrowDown");
+    simulateKeyDown(wrapper, "Enter");
+    expect(onActivate.mock.calls).toHaveLength(3);
+    expect(onActivate.mock.calls[2][0]).toBe("B");
+
+    wrapper.simulate("blur");
+    simulateKeyDown(wrapper, "Enter");
+    expect(onActivate.mock.calls).toHaveLength(3);
+  });
+
+  it("does not throw when onActivate is undefined and Enter is pressed", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "A"
+    });
+
+    simulateKeyDown(wrapper, "Enter");
+  });
+
+  it("ignores key strokes when pressing modifiers", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split("")),
+      focused: "L"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+      "key-L"
+    );
+    expect(wrapper.find(".focused").prop("id")).toBe("key-L");
+
+    const testKeys = [
+      { key: "ArrowDown" },
+      { key: "ArrowUp" },
+      { key: "ArrowLeft" },
+      { key: "ArrowRight" }
+    ];
+    const modifiers = [
+      { altKey: true },
+      { ctrlKey: true },
+      { metaKey: true },
+      { shiftKey: true }
+    ];
+
+    for (const key of testKeys) {
+      for (const modifier of modifiers) {
+        wrapper.simulate("keydown", Object.assign({}, key, modifier));
+        expect(formatTree(wrapper)).toMatchSnapshot();
+        expect(wrapper.getDOMNode().getAttribute("aria-activedescendant")).toBe(
+          "key-L"
+        );
+      }
+    }
+  });
+
+  it("renders arrows as expected when nodes are expanded", () => {
+    const wrapper = mountTree({
+      expanded: new Set("ABCDEFGHIJKLMNO".split(""))
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+
+    getTreeNodes(wrapper).forEach(n => {
+      if ("ABECDMN".split("").includes(getSanitizedNodeText(n))) {
+        expect(n.find(".arrow.expanded").exists()).toBe(true);
+      } else {
+        expect(n.find(".arrow").exists()).toBe(false);
+      }
+    });
+  });
+
+  it("renders arrows as expected when nodes are collapsed", () => {
+    const wrapper = mountTree();
+    expect(formatTree(wrapper)).toMatchSnapshot();
+
+    getTreeNodes(wrapper).forEach(n => {
+      const arrow = n.find(".arrow");
+      expect(arrow.exists()).toBe(true);
+      expect(arrow.hasClass("expanded")).toBe(false);
+    });
+  });
+
+  it("uses isExpandable prop if it exists to render tree nodes", () => {
+    const wrapper = mountTree({
+      isExpandable: item => item === "A"
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+  });
+
+  it("adds the expected data-expandable attribute", () => {
+    const wrapper = mountTree({
+      isExpandable: item => item === "A"
+    });
+    const nodes = getTreeNodes(wrapper);
+    expect(nodes.at(0).prop("data-expandable")).toBe(true);
+    expect(nodes.at(1).prop("data-expandable")).toBe(false);
+  });
+});
+
+function getTreeNodes(wrapper) {
+  return wrapper.find(".tree-node");
+}
+
+function simulateKeyDown(wrapper, key) {
+  wrapper.simulate("keydown", {
+    key,
+    preventDefault: () => {},
+    stopPropagation: () => {}
+  });
+}
+
+/*
+ * Takes an Enzyme wrapper (obtained with mount/mount/…) and
+ * returns a stringified version of the Tree, e.g.
+ *
+ *   ▼ A
+ *   |   ▼ B
+ *   |   |   ▼ E
+ *   |   |   |   K
+ *   |   |   |   L
+ *   |   |   F
+ *   |   |   G
+ *   |   ▼ C
+ *   |   |   H
+ *   |   |   I
+ *   |   ▼ D
+ *   |   |   J
+ *   ▼ M
+ *   |   ▼ N
+ *   |   |   O
+ *
+ */
+function formatTree(wrapper) {
+  const textTree = getTreeNodes(wrapper)
+    .map(node => {
+      const level = (node.prop("aria-level") || 1) - 1;
+      const indentStr = "|  ".repeat(level);
+      const arrow = node.find(".arrow");
+      let arrowStr = "  ";
+      if (arrow.exists()) {
+        arrowStr = arrow.hasClass("expanded") ? "▼ " : "▶︎ ";
+      }
+
+      return `${indentStr}${arrowStr}${getSanitizedNodeText(node)}`;
+    })
+    .join("\n");
+
+  // Wrap in new lines so tree nodes are aligned as expected.
+  return `\n${textTree}\n`;
+}
+
+function getSanitizedNodeText(node) {
+  // Stripping off the invisible space used in the indent.
+  return node.text().replace(/^\u200B+/, "");
+}
+
+// Encoding of the following tree/forest:
+//
+// A
+// |-- B
+// |   |-- E
+// |   |   |-- K
+// |   |   `-- L
+// |   |-- F
+// |   `-- G
+// |-- C
+// |   |-- H
+// |   `-- I
+// `-- D
+//     `-- J
+// M
+// `-- N
+//     `-- O
+
+var TEST_TREE = {
+  children: {
+    A: ["B", "C", "D"],
+    B: ["E", "F", "G"],
+    C: ["H", "I"],
+    D: ["J"],
+    E: ["K", "L"],
+    F: [],
+    G: [],
+    H: [],
+    I: [],
+    J: [],
+    K: [],
+    L: [],
+    M: ["N"],
+    N: ["O"],
+    O: []
+  },
+  parent: {
+    A: null,
+    B: "A",
+    C: "A",
+    D: "A",
+    E: "B",
+    F: "B",
+    G: "B",
+    H: "C",
+    I: "C",
+    J: "D",
+    K: "E",
+    L: "E",
+    M: null,
+    N: "M",
+    O: "N"
+  }
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/src/tree.css
@@ -0,0 +1,90 @@
+/* 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/. */
+
+ /* We can remove the outline since we do add our own focus style on nodes */
+.tree:focus {
+  outline: none;
+}
+
+.tree.inline {
+  display: inline-block;
+}
+
+.tree.nowrap {
+  white-space: nowrap;
+}
+
+.tree.noselect {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  user-select: none;
+}
+
+.tree .tree-node {
+  display: flex;
+}
+
+.tree .tree-node:not(.focused):hover {
+  background-color: var(--theme-selection-background-hover);
+}
+
+.tree-indent {
+  display: inline-block;
+  width: 12px;
+  margin-inline-start: 5px;
+  border-inline-start: 1px solid #A2D1FF;
+  flex-shrink: 0;
+}
+
+/* Align with expandables siblings (where we have the arrow) */
+.tree-node[data-expandable="false"] .tree-indent:last-of-type {
+  margin-inline-end: 15px;
+}
+
+/* For non expandable root nodes, we don't have .tree-indent elements, so we declare
+   the margin on the start of the node */
+.tree-node[data-expandable="false"][aria-level="1"] {
+  padding-inline-start: 15px
+}
+
+.tree .tree-node[data-expandable="true"] {
+  cursor: default;
+}
+
+.tree-node button.arrow {
+  background:url(/images/arrow.svg) no-repeat;
+  background-size:contain;
+  background-position:center center;
+  width: 9px;
+  height: 9px;
+  border:0;
+  padding:0;
+  margin-inline-start: 1px;
+  margin-inline-end: 4px;
+  transform: rotate(-90deg);
+  transform-origin: center center;
+  transition: transform 0.125s ease;
+  align-self: center;
+  -moz-context-properties: fill;
+  fill: var(--theme-splitter-color, #9B9B9B);
+}
+
+html[dir="rtl"] .tree-node button.arrow {
+  transform: rotate(90deg);
+}
+
+.tree-node button.arrow.expanded.expanded {
+  transform: rotate(0deg);
+ }
+
+.tree .tree-node.focused {
+  color: white;
+  background-color: var(--theme-selection-background, #0a84ff);
+}
+
+.tree-node.focused button.arrow {
+  fill: currentColor;
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/src/tree.js
@@ -0,0 +1,852 @@
+/* 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 React from "react";
+const { Component, createFactory } = React;
+import dom from "react-dom-factories";
+import PropTypes from "prop-types";
+
+require("./tree.css");
+
+// depth
+const AUTO_EXPAND_DEPTH = 0;
+
+/**
+ * An arrow that displays whether its node is expanded (▼) or collapsed
+ * (▶). When its node has no children, it is hidden.
+ */
+class ArrowExpander extends Component {
+  static get propTypes() {
+    return {
+      expanded: PropTypes.bool
+    };
+  }
+
+  shouldComponentUpdate(nextProps, nextState) {
+    return this.props.expanded !== nextProps.expanded;
+  }
+
+  render() {
+    const { expanded } = this.props;
+
+    const classNames = ["arrow"];
+    if (expanded) {
+      classNames.push("expanded");
+    }
+    return dom.button({
+      className: classNames.join(" ")
+    });
+  }
+}
+
+const treeIndent = dom.span({ className: "tree-indent" }, "\u200B");
+
+class TreeNode extends Component {
+  static get propTypes() {
+    return {
+      id: PropTypes.any.isRequired,
+      index: PropTypes.number.isRequired,
+      depth: PropTypes.number.isRequired,
+      focused: PropTypes.bool.isRequired,
+      expanded: PropTypes.bool.isRequired,
+      item: PropTypes.any.isRequired,
+      isExpandable: PropTypes.bool.isRequired,
+      onClick: PropTypes.func,
+      renderItem: PropTypes.func.isRequired
+    };
+  }
+
+  shouldComponentUpdate(nextProps) {
+    return (
+      this.props.item !== nextProps.item ||
+      this.props.focused !== nextProps.focused ||
+      this.props.expanded !== nextProps.expanded
+    );
+  }
+
+  render() {
+    const {
+      depth,
+      id,
+      item,
+      focused,
+      expanded,
+      renderItem,
+      isExpandable
+    } = this.props;
+
+    const arrow = isExpandable
+      ? ArrowExpanderFactory({
+          item,
+          expanded
+        })
+      : null;
+
+    let ariaExpanded;
+    if (this.props.isExpandable) {
+      ariaExpanded = false;
+    }
+    if (this.props.expanded) {
+      ariaExpanded = true;
+    }
+
+    const indents = Array.from({ length: depth }).fill(treeIndent);
+    const items = indents.concat(
+      renderItem(item, depth, focused, arrow, expanded)
+    );
+
+    return dom.div(
+      {
+        id,
+        className: `tree-node${focused ? " focused" : ""}`,
+        onClick: this.props.onClick,
+        role: "treeitem",
+        "aria-level": depth + 1,
+        "aria-expanded": ariaExpanded,
+        "data-expandable": this.props.isExpandable
+      },
+      ...items
+    );
+  }
+}
+
+const ArrowExpanderFactory = createFactory(ArrowExpander);
+const TreeNodeFactory = createFactory(TreeNode);
+
+/**
+ * Create a function that calls the given function `fn` only once per animation
+ * frame.
+ *
+ * @param {Function} fn
+ * @returns {Function}
+ */
+function oncePerAnimationFrame(fn) {
+  let animationId = null;
+  let argsToPass = null;
+  return function(...args) {
+    argsToPass = args;
+    if (animationId !== null) {
+      return;
+    }
+
+    animationId = requestAnimationFrame(() => {
+      fn.call(this, ...argsToPass);
+      animationId = null;
+      argsToPass = null;
+    });
+  };
+}
+
+/**
+ * A generic tree component. See propTypes for the public API.
+ *
+ * This tree component doesn't make any assumptions about the structure of your
+ * tree data. Whether children are computed on demand, or stored in an array in
+ * the parent's `_children` property, it doesn't matter. We only require the
+ * implementation of `getChildren`, `getRoots`, `getParent`, and `isExpanded`
+ * functions.
+ *
+ * This tree component is well tested and reliable. See the tests in ./tests
+ * and its usage in the performance and memory panels in mozilla-central.
+ *
+ * This tree component doesn't make any assumptions about how to render items in
+ * the tree. You provide a `renderItem` function, and this component will ensure
+ * that only those items whose parents are expanded and which are visible in the
+ * viewport are rendered. The `renderItem` function could render the items as a
+ * "traditional" tree or as rows in a table or anything else. It doesn't
+ * restrict you to only one certain kind of tree.
+ *
+ * The tree comes with basic styling for the indent, the arrow, as well as
+ * hovered and focused styles which can be override in CSS.
+ *
+ * ### Example Usage
+ *
+ * Suppose we have some tree data where each item has this form:
+ *
+ *     {
+ *       id: Number,
+ *       label: String,
+ *       parent: Item or null,
+ *       children: Array of child items,
+ *       expanded: bool,
+ *     }
+ *
+ * Here is how we could render that data with this component:
+ *
+ *     class MyTree extends Component {
+ *       static get propTypes() {
+ *         // The root item of the tree, with the form described above.
+ *         return {
+ *           root: PropTypes.object.isRequired
+ *         };
+ *       },
+ *
+ *       render() {
+ *         return Tree({
+ *           itemHeight: 20, // px
+ *
+ *           getRoots: () => [this.props.root],
+ *
+ *           getParent: item => item.parent,
+ *           getChildren: item => item.children,
+ *           getKey: item => item.id,
+ *           isExpanded: item => item.expanded,
+ *
+ *           renderItem: (item, depth, isFocused, arrow, isExpanded) => {
+ *             let className = "my-tree-item";
+ *             if (isFocused) {
+ *               className += " focused";
+ *             }
+ *             return dom.div({
+ *               className,
+ *             },
+ *               arrow,
+ *               // And here is the label for this item.
+ *               dom.span({ className: "my-tree-item-label" }, item.label)
+ *             );
+ *           },
+ *
+ *           onExpand: item => dispatchExpandActionToRedux(item),
+ *           onCollapse: item => dispatchCollapseActionToRedux(item),
+ *         });
+ *       }
+ *     }
+ */
+class Tree extends Component {
+  static get propTypes() {
+    return {
+      // Required props
+
+      // A function to get an item's parent, or null if it is a root.
+      //
+      // Type: getParent(item: Item) -> Maybe<Item>
+      //
+      // Example:
+      //
+      //     // The parent of this item is stored in its `parent` property.
+      //     getParent: item => item.parent
+      getParent: PropTypes.func.isRequired,
+
+      // A function to get an item's children.
+      //
+      // Type: getChildren(item: Item) -> [Item]
+      //
+      // Example:
+      //
+      //     // This item's children are stored in its `children` property.
+      //     getChildren: item => item.children
+      getChildren: PropTypes.func.isRequired,
+
+      // A function which takes an item and ArrowExpander component instance and
+      // returns a component, or text, or anything else that React considers
+      // renderable.
+      //
+      // Type: renderItem(item: Item,
+      //                  depth: Number,
+      //                  isFocused: Boolean,
+      //                  arrow: ReactComponent,
+      //                  isExpanded: Boolean) -> ReactRenderable
+      //
+      // Example:
+      //
+      //     renderItem: (item, depth, isFocused, arrow, isExpanded) => {
+      //       let className = "my-tree-item";
+      //       if (isFocused) {
+      //         className += " focused";
+      //       }
+      //       return dom.div(
+      //         {
+      //           className,
+      //           style: { marginLeft: depth * 10 + "px" }
+      //         },
+      //         arrow,
+      //         dom.span({ className: "my-tree-item-label" }, item.label)
+      //       );
+      //     },
+      renderItem: PropTypes.func.isRequired,
+
+      // A function which returns the roots of the tree (forest).
+      //
+      // Type: getRoots() -> [Item]
+      //
+      // Example:
+      //
+      //     // In this case, we only have one top level, root item. You could
+      //     // return multiple items if you have many top level items in your
+      //     // tree.
+      //     getRoots: () => [this.props.rootOfMyTree]
+      getRoots: PropTypes.func.isRequired,
+
+      // A function to get a unique key for the given item. This helps speed up
+      // React's rendering a *TON*.
+      //
+      // Type: getKey(item: Item) -> String
+      //
+      // Example:
+      //
+      //     getKey: item => `my-tree-item-${item.uniqueId}`
+      getKey: PropTypes.func.isRequired,
+
+      // A function to get whether an item is expanded or not. If an item is not
+      // expanded, then it must be collapsed.
+      //
+      // Type: isExpanded(item: Item) -> Boolean
+      //
+      // Example:
+      //
+      //     isExpanded: item => item.expanded,
+      isExpanded: PropTypes.func.isRequired,
+
+      // Optional props
+
+      // The currently focused item, if any such item exists.
+      focused: PropTypes.any,
+
+      // Handle when a new item is focused.
+      onFocus: PropTypes.func,
+
+      // The depth to which we should automatically expand new items.
+      autoExpandDepth: PropTypes.number,
+      // Should auto expand all new items or just the new items under the first
+      // root item.
+      autoExpandAll: PropTypes.bool,
+
+      // Auto expand a node only if number of its children
+      // are less than autoExpandNodeChildrenLimit
+      autoExpandNodeChildrenLimit: PropTypes.number,
+
+      // Note: the two properties below are mutually exclusive. Only one of the
+      // label properties is necessary.
+      // ID of an element whose textual content serves as an accessible label
+      // for a tree.
+      labelledby: PropTypes.string,
+      // Accessibility label for a tree widget.
+      label: PropTypes.string,
+
+      // Optional event handlers for when items are expanded or collapsed.
+      // Useful for dispatching redux events and updating application state,
+      // maybe lazily loading subtrees from a worker, etc.
+      //
+      // Type:
+      //     onExpand(item: Item)
+      //     onCollapse(item: Item)
+      //
+      // Example:
+      //
+      //     onExpand: item => dispatchExpandActionToRedux(item)
+      onExpand: PropTypes.func,
+      onCollapse: PropTypes.func,
+      // Optional event handler called with the current focused node when the
+      // Enter key is pressed. Can be useful to allow further keyboard actions
+      // within the tree node.
+      onActivate: PropTypes.func,
+      isExpandable: PropTypes.func,
+      // Additional classes to add to the root element.
+      className: PropTypes.string,
+      // style object to be applied to the root element.
+      style: PropTypes.object,
+      // Prevents blur when Tree loses focus
+      preventBlur: PropTypes.bool
+    };
+  }
+
+  static get defaultProps() {
+    return {
+      autoExpandDepth: AUTO_EXPAND_DEPTH,
+      autoExpandAll: true
+    };
+  }
+
+  constructor(props) {
+    super(props);
+
+    this.state = {
+      seen: new Set()
+    };
+
+    this._onExpand = oncePerAnimationFrame(this._onExpand).bind(this);
+    this._onCollapse = oncePerAnimationFrame(this._onCollapse).bind(this);
+    this._focusPrevNode = oncePerAnimationFrame(this._focusPrevNode).bind(this);
+    this._focusNextNode = oncePerAnimationFrame(this._focusNextNode).bind(this);
+    this._focusParentNode = oncePerAnimationFrame(this._focusParentNode).bind(
+      this
+    );
+    this._focusFirstNode = oncePerAnimationFrame(this._focusFirstNode).bind(
+      this
+    );
+    this._focusLastNode = oncePerAnimationFrame(this._focusLastNode).bind(this);
+
+    this._autoExpand = this._autoExpand.bind(this);
+    this._preventArrowKeyScrolling = this._preventArrowKeyScrolling.bind(this);
+    this._dfs = this._dfs.bind(this);
+    this._dfsFromRoots = this._dfsFromRoots.bind(this);
+    this._focus = this._focus.bind(this);
+    this._scrollNodeIntoView = this._scrollNodeIntoView.bind(this);
+    this._onBlur = this._onBlur.bind(this);
+    this._onKeyDown = this._onKeyDown.bind(this);
+    this._nodeIsExpandable = this._nodeIsExpandable.bind(this);
+    this._activateNode = oncePerAnimationFrame(this._activateNode).bind(this);
+  }
+
+  componentDidMount() {
+    this._autoExpand();
+    if (this.props.focused) {
+      this._scrollNodeIntoView(this.props.focused);
+      // Always keep the focus on the tree itself.
+      this.treeRef.focus();
+    }
+  }
+
+  componentWillReceiveProps(nextProps) {
+    this._autoExpand();
+  }
+
+  componentDidUpdate(prevProps, prevState) {
+    if (this.props.focused && prevProps.focused !== this.props.focused) {
+      this._scrollNodeIntoView(this.props.focused);
+      // Always keep the focus on the tree itself.
+      this.treeRef.focus();
+    }
+  }
+
+  _autoExpand() {
+    const { autoExpandDepth, autoExpandNodeChildrenLimit } = this.props;
+    if (!autoExpandDepth) {
+      return;
+    }
+
+    // Automatically expand the first autoExpandDepth levels for new items. Do
+    // not use the usual DFS infrastructure because we don't want to ignore
+    // collapsed nodes.
+    const autoExpand = (item, currentDepth) => {
+      if (currentDepth >= autoExpandDepth || this.state.seen.has(item)) {
+        return;
+      }
+
+      const children = this.props.getChildren(item);
+      if (
+        autoExpandNodeChildrenLimit &&
+        children.length > autoExpandNodeChildrenLimit
+      ) {
+        return;
+      }
+
+      this.props.onExpand(item);
+      this.state.seen.add(item);
+
+      const length = children.length;
+      for (let i = 0; i < length; i++) {
+        autoExpand(children[i], currentDepth + 1);
+      }
+    };
+
+    const roots = this.props.getRoots();
+    const length = roots.length;
+    if (this.props.autoExpandAll) {
+      for (let i = 0; i < length; i++) {
+        autoExpand(roots[i], 0);
+      }
+    } else if (length != 0) {
+      autoExpand(roots[0], 0);
+    }
+  }
+
+  _preventArrowKeyScrolling(e) {
+    switch (e.key) {
+      case "ArrowUp":
+      case "ArrowDown":
+      case "ArrowLeft":
+      case "ArrowRight":
+        e.preventDefault();
+        e.stopPropagation();
+        if (e.nativeEvent) {
+          if (e.nativeEvent.preventDefault) {
+            e.nativeEvent.preventDefault();
+          }
+          if (e.nativeEvent.stopPropagation) {
+            e.nativeEvent.stopPropagation();
+          }
+        }
+    }
+  }
+
+  /**
+   * Perform a pre-order depth-first search from item.
+   */
+  _dfs(item, maxDepth = Infinity, traversal = [], _depth = 0) {
+    traversal.push({ item, depth: _depth });
+
+    if (!this.props.isExpanded(item)) {
+      return traversal;
+    }
+
+    const nextDepth = _depth + 1;
+
+    if (nextDepth > maxDepth) {
+      return traversal;
+    }
+
+    const children = this.props.getChildren(item);
+    const length = children.length;
+    for (let i = 0; i < length; i++) {
+      this._dfs(children[i], maxDepth, traversal, nextDepth);
+    }
+
+    return traversal;
+  }
+
+  /**
+   * Perform a pre-order depth-first search over the whole forest.
+   */
+  _dfsFromRoots(maxDepth = Infinity) {
+    const traversal = [];
+
+    const roots = this.props.getRoots();
+    const length = roots.length;
+    for (let i = 0; i < length; i++) {
+      this._dfs(roots[i], maxDepth, traversal);
+    }
+
+    return traversal;
+  }
+
+  /**
+   * Expands current row.
+   *
+   * @param {Object} item
+   * @param {Boolean} expandAllChildren
+   */
+  _onExpand(item, expandAllChildren) {
+    if (this.props.onExpand) {
+      this.props.onExpand(item);
+
+      if (expandAllChildren) {
+        const children = this._dfs(item);
+        const length = children.length;
+        for (let i = 0; i < length; i++) {
+          this.props.onExpand(children[i].item);
+        }
+      }
+    }
+  }
+
+  /**
+   * Collapses current row.
+   *
+   * @param {Object} item
+   */
+  _onCollapse(item) {
+    if (this.props.onCollapse) {
+      this.props.onCollapse(item);
+    }
+  }
+
+  /**
+   * Sets the passed in item to be the focused item.
+   *
+   * @param {Object|undefined} item
+   *        The item to be focused, or undefined to focus no item.
+   *
+   * @param {Object|undefined} options
+   *        An options object which can contain:
+   *          - dir: "up" or "down" to indicate if we should scroll the element
+   *                 to the top or the bottom of the scrollable container when
+   *                 the element is off canvas.
+   */
+  _focus(item, options = {}) {
+    const { preventAutoScroll } = options;
+    if (item && !preventAutoScroll) {
+      this._scrollNodeIntoView(item, options);
+    }
+    if (this.props.onFocus) {
+      this.props.onFocus(item);
+    }
+  }
+
+  /**
+   * Sets the passed in item to be the focused item.
+   *
+   * @param {Object|undefined} item
+   *        The item to be scrolled to.
+   *
+   * @param {Object|undefined} options
+   *        An options object which can contain:
+   *          - dir: "up" or "down" to indicate if we should scroll the element
+   *                 to the top or the bottom of the scrollable container when
+   *                 the element is off canvas.
+   */
+  _scrollNodeIntoView(item, options = {}) {
+    if (item !== undefined) {
+      const treeElement = this.treeRef;
+      const element = document.getElementById(this.props.getKey(item));
+
+      if (element) {
+        const { top, bottom } = element.getBoundingClientRect();
+        const closestScrolledParent = node => {
+          if (node == null) {
+            return null;
+          }
+
+          if (node.scrollHeight > node.clientHeight) {
+            return node;
+          }
+          return closestScrolledParent(node.parentNode);
+        };
+        const scrolledParent = closestScrolledParent(treeElement);
+        const scrolledParentRect = scrolledParent
+          ? scrolledParent.getBoundingClientRect()
+          : null;
+        const isVisible =
+          !scrolledParent ||
+          (top >= scrolledParentRect.top &&
+            bottom <= scrolledParentRect.bottom);
+
+        if (!isVisible) {
+          const { alignTo } = options;
+          const scrollToTop = alignTo
+            ? alignTo === "top"
+            : !scrolledParentRect || top < scrolledParentRect.top;
+          element.scrollIntoView(scrollToTop);
+        }
+      }
+    }
+  }
+
+  /**
+   * Sets the state to have no focused item.
+   */
+  _onBlur() {
+    if (!this.props.preventBlur) {
+      this._focus(undefined);
+    }
+  }
+
+  /**
+   * Handles key down events in the tree's container.
+   *
+   * @param {Event} e
+   */
+  _onKeyDown(e) {
+    if (this.props.focused == null) {
+      return;
+    }
+
+    // Allow parent nodes to use navigation arrows with modifiers.
+    if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
+      return;
+    }
+
+    this._preventArrowKeyScrolling(e);
+
+    switch (e.key) {
+      case "ArrowUp":
+        this._focusPrevNode();
+        return;
+
+      case "ArrowDown":
+        this._focusNextNode();
+        return;
+
+      case "ArrowLeft":
+        if (
+          this.props.isExpanded(this.props.focused) &&
+          this._nodeIsExpandable(this.props.focused)
+        ) {
+          this._onCollapse(this.props.focused);
+        } else {
+          this._focusParentNode();
+        }
+        return;
+
+      case "ArrowRight":
+        if (
+          this._nodeIsExpandable(this.props.focused) &&
+          !this.props.isExpanded(this.props.focused)
+        ) {
+          this._onExpand(this.props.focused);
+        } else {
+          this._focusNextNode();
+        }
+        return;
+
+      case "Home":
+        this._focusFirstNode();
+        return;
+
+      case "End":
+        this._focusLastNode();
+        return;
+
+      case "Enter":
+        this._activateNode();
+    }
+  }
+
+  /**
+   * Sets the previous node relative to the currently focused item, to focused.
+   */
+  _focusPrevNode() {
+    // Start a depth first search and keep going until we reach the currently
+    // focused node. Focus the previous node in the DFS, if it exists. If it
+    // doesn't exist, we're at the first node already.
+
+    let prev;
+
+    const traversal = this._dfsFromRoots();
+    const length = traversal.length;
+    for (let i = 0; i < length; i++) {
+      const item = traversal[i].item;
+      if (item === this.props.focused) {
+        break;
+      }
+      prev = item;
+    }
+    if (prev === undefined) {
+      return;
+    }
+
+    this._focus(prev, { alignTo: "top" });
+  }
+
+  /**
+   * Handles the down arrow key which will focus either the next child
+   * or sibling row.
+   */
+  _focusNextNode() {
+    // Start a depth first search and keep going until we reach the currently
+    // focused node. Focus the next node in the DFS, if it exists. If it
+    // doesn't exist, we're at the last node already.
+    const traversal = this._dfsFromRoots();
+    const length = traversal.length;
+    let i = 0;
+
+    while (i < length) {
+      if (traversal[i].item === this.props.focused) {
+        break;
+      }
+      i++;
+    }
+
+    if (i + 1 < traversal.length) {
+      this._focus(traversal[i + 1].item, { alignTo: "bottom" });
+    }
+  }
+
+  /**
+   * Handles the left arrow key, going back up to the current rows'
+   * parent row.
+   */
+  _focusParentNode() {
+    const parent = this.props.getParent(this.props.focused);
+    if (!parent) {
+      this._focusPrevNode(this.props.focused);
+      return;
+    }
+
+    this._focus(parent, { alignTo: "top" });
+  }
+
+  _focusFirstNode() {
+    const traversal = this._dfsFromRoots();
+    this._focus(traversal[0].item, { alignTo: "top" });
+  }
+
+  _focusLastNode() {
+    const traversal = this._dfsFromRoots();
+    const lastIndex = traversal.length - 1;
+    this._focus(traversal[lastIndex].item, { alignTo: "bottom" });
+  }
+
+  _activateNode() {
+    if (this.props.onActivate) {
+      this.props.onActivate(this.props.focused);
+    }
+  }
+
+  _nodeIsExpandable(item) {
+    return this.props.isExpandable
+      ? this.props.isExpandable(item)
+      : !!this.props.getChildren(item).length;
+  }
+
+  render() {
+    const traversal = this._dfsFromRoots();
+    const { focused } = this.props;
+
+    const nodes = traversal.map((v, i) => {
+      const { item, depth } = traversal[i];
+      const key = this.props.getKey(item, i);
+      return TreeNodeFactory({
+        key,
+        id: key,
+        index: i,
+        item,
+        depth,
+        renderItem: this.props.renderItem,
+        focused: focused === item,
+        expanded: this.props.isExpanded(item),
+        isExpandable: this._nodeIsExpandable(item),
+        onExpand: this._onExpand,
+        onCollapse: this._onCollapse,
+        onClick: e => {
+          // We can stop the propagation since click handler on the node can be
+          // created in `renderItem`.
+          e.stopPropagation();
+
+          // Since the user just clicked the node, there's no need to check if
+          // it should be scrolled into view.
+          this._focus(item, { preventAutoScroll: true });
+          if (this.props.isExpanded(item)) {
+            this.props.onCollapse(item);
+          } else {
+            this.props.onExpand(item, e.altKey);
+          }
+        }
+      });
+    });
+
+    const style = Object.assign({}, this.props.style || {}, {
+      padding: 0,
+      margin: 0
+    });
+
+    return dom.div(
+      {
+        className: `tree ${this.props.className ? this.props.className : ""}`,
+        ref: el => {
+          this.treeRef = el;
+        },
+        role: "tree",
+        tabIndex: "0",
+        onKeyDown: this._onKeyDown,
+        onKeyPress: this._preventArrowKeyScrolling,
+        onKeyUp: this._preventArrowKeyScrolling,
+        onFocus: ({ nativeEvent }) => {
+          if (focused || !nativeEvent || !this.treeRef) {
+            return;
+          }
+
+          const { explicitOriginalTarget } = nativeEvent;
+          // Only set default focus to the first tree node if the focus came
+          // from outside the tree (e.g. by tabbing to the tree from other
+          // external elements).
+          if (
+            explicitOriginalTarget !== this.treeRef &&
+            !this.treeRef.contains(explicitOriginalTarget)
+          ) {
+            this._focus(traversal[0].item);
+          }
+        },
+        onBlur: this._onBlur,
+        "aria-label": this.props.label,
+        "aria-labelledby": this.props.labelledby,
+        "aria-activedescendant": focused && this.props.getKey(focused),
+        style
+      },
+      nodes
+    );
+  }
+}
+
+export default Tree;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/stories/index.js
@@ -0,0 +1,5 @@
+/* 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/. */
+
+require("./tree");
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-components/stories/tree.js
@@ -0,0 +1,244 @@
+/* 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 React from "react";
+const { Component, createFactory, createElement } = React;
+
+import Components from "../index";
+const Tree = createFactory(Components.Tree);
+import { storiesOf } from "@storybook/react";
+
+storiesOf("Tree", module)
+  .add("Simple tree - autoExpand 1", () => {
+    return renderTree({
+      autoExpandDepth: 1,
+    });
+  })
+  .add("Simple tree - autoExpand 2", () => {
+    return renderTree({
+      autoExpandDepth: 2,
+    });
+  })
+  .add("Simple tree - autoExpand ∞", () => {
+    return renderTree({
+      autoExpandDepth: Infinity,
+    });
+  })
+  .add("Multiple root tree", () => {
+    return renderTree({
+      autoExpandDepth: Infinity,
+      getRoots: () => ["A", "P", "M", "Q", "W", "R"],
+    });
+  })
+  .add("focused node", () => {
+    return renderTree({
+      focused: "W",
+      getRoots: () => ["A", "W"],
+      expanded: new Set(["A"])
+    });
+  })
+  .add("variable height nodes", () => {
+    const nodes = Array.from({length: 10})
+      .map((_, i) => `item ${i + 1} - `.repeat(10 + Math.random() * 50));
+    return renderTree({
+      getRoots: () => ["ROOT"],
+      expanded: new Set(["ROOT"])
+    }, {
+      children: {"ROOT": nodes}
+    });
+  })
+  .add("scrollable tree", () => {
+    const nodes = Array.from({length: 500}).map((_, i) => (i + 1).toString());
+
+    class container extends Component {
+      constructor(props) {
+        super(props);
+        const state = {
+          expanded: new Set(),
+          focused: null
+        };
+        this.state = state;
+      }
+
+      render() {
+        return createElement("div", {},
+          createElement("label", {
+            style: {position: "fixed", right: 0},
+          },
+            "Enter node number to set focus on: ",
+            createElement("input", {
+              type: "number",
+              min: 1,
+              max: 500,
+              onInput: e => {
+                // Storing balue since `e` can be reused by the time the setState
+                // callback is called.
+                const value = e.target.value.toString();
+                this.setState(previousState => {
+                  return {focused: value};
+                });
+              }
+            }),
+          ),
+          createTreeElement({getRoots: () => nodes}, this, {})
+        );
+      }
+    }
+    return createFactory(container)();
+  })
+  .add("scrollable tree with focused node", () => {
+    const nodes = Array.from({length: 500}).map((_, i) => `item ${i + 1}`);
+    return renderTree({
+      focused: "item 250",
+      getRoots: () => nodes,
+    }, {});
+  })
+  .add("1000 items tree", () => {
+    const nodes = Array.from({length: 1000}).map((_, i) => `item-${i + 1}`);
+    return renderTree({
+      getRoots: () => ["ROOT"],
+      expanded: new Set()
+    }, {
+      children: {"ROOT": nodes}
+    });
+  })
+  .add("30,000 items tree", () => {
+    const nodes = Array.from({length: 1000}).map((_, i) => `item-${i + 1}`);
+    return renderTree({
+      getRoots: () => nodes,
+      expanded: new Set(Array.from({length: 2000}).map((_, i) => `item-${i + 1}`))
+    }, {
+      children: Array.from({length: 2000}).reduce((res, _, i) => {
+        res[`item-${i + 1}`] = [`item-${i + 1001}`];
+        return res;
+      }, {})
+    });
+  });
+
+// Encoding of the following tree/forest:
+//
+// A
+// |-- B
+// |   |-- E
+// |   |   |-- K
+// |   |   `-- L
+// |   |-- F
+// |   `-- G
+// |-- C
+// |   |-- H
+// |   `-- I
+// `-- D
+//     `-- J
+// M
+// `-- N
+//     `-- O
+// P
+// Q
+// R
+// W
+// `-- X
+//     `-- Z
+// `-- Y
+const TEST_TREE = {
+  children: {
+    A: ["B", "C", "D"],
+    B: ["E", "F", "G"],
+    C: ["H", "I"],
+    D: ["J"],
+    E: ["K", "L"],
+    F: [],
+    G: [],
+    H: [],
+    I: [],
+    J: [],
+    K: [],
+    L: [],
+    M: ["N"],
+    N: ["O"],
+    O: [],
+    P: [],
+    Q: [],
+    R: [],
+    W: ["X", "Y"],
+    X: ["Z"],
+    Y: [],
+    Z: [],
+  },
+  parent: {
+    A: null,
+    B: "A",
+    C: "A",
+    D: "A",
+    E: "B",
+    F: "B",
+    G: "B",
+    H: "C",
+    I: "C",
+    J: "D",
+    K: "E",
+    L: "E",
+    M: null,
+    N: "M",
+    O: "N",
+    P: null,
+    Q: null,
+    R: null,
+    W: null,
+    X: "W",
+    Y: "W",
+    Z: "X",
+  },
+};
+
+function renderTree(props, tree = TEST_TREE) {
+  class container extends Component {
+    constructor(props2) {
+      super(props2);
+      const state = {
+        expanded: props2.expanded || new Set(),
+        focused: props2.focused
+      };
+      delete props2.focused;
+      this.state = state;
+    }
+
+    render() {
+      return createTreeElement(props, this, tree);
+    }
+  }
+  return createFactory(container)();
+}
+
+function createTreeElement(props, context, tree) {
+  return Tree(Object.assign({
+    getParent: x => tree.parent && tree.parent[x],
+    getChildren: x => tree.children && tree.children[x]
+      ? tree.children[x]
+      : [],
+    renderItem: (x, depth, focused, arrow, expanded) => [arrow, x],
+    getRoots: () => ["A"],
+    getKey: x => "key-" + x,
+    onFocus: x => {
+      context.setState(previousState => {
+        return {focused: x};
+      });
+    },
+    onExpand: x => {
+      context.setState(previousState => {
+        const expanded = new Set(previousState.expanded);
+        expanded.add(x);
+        return {expanded};
+      });
+    },
+    onCollapse: x => {
+      context.setState(previousState => {
+        const expanded = new Set(previousState.expanded);
+        expanded.delete(x);
+        return {expanded};
+      });
+    },
+    isExpanded: x => context.state && context.state.expanded.has(x),
+    focused: context.state.focused,
+  }, props));
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  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/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+  This Source Code Form is "Incompatible With Secondary Licenses", as
+  defined by the Mozilla Public License, v. 2.0.
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/README.md
@@ -0,0 +1,104 @@
+# DevTools Reps
+
+![](http://g.recordit.co/IxhfRP8pNf.gif)
+
+Reps is Firefox DevTools' remote object formatter. It stands for _representation_.
+
+## Example
+
+```js
+const React = require("react");
+let {
+  Rep,
+  Grip,
+  MODE,
+  ObjectInspector,
+  ObjectInspectorUtils
+} = require("devtools-reps");
+
+function renderRep({ object, mode }) {
+  return Rep({ object, defaultRep: Grip, mode });
+}
+
+ReactDOM.render(
+  Rep({ object, defaultRep: Grip, mode }),
+  document.createElement("div")
+);
+```
+
+## What is what?
+
+### `Rep`
+
+`Rep` is the top-level component that is capable of formatting any type.
+
+Supported types:
+
+> RegExp, StyleSheet, Event, DateTime, TextNode, Attribute, Func, ArrayRep, Document, Window, ObjectWithText, ObjectWithURL, GripArray, GripMap, Grip, Undefined, Null, StringRep, Number, SymbolRep,
+
+### `Grip`
+
+`Grip` is a client representation of a remote JS object and is used as an input object for this rep component.
+
+## Getting started
+
+You need to clone the debugger.html repository, then install dependencies, for which you'll need the [Yarn](https://yarnpkg.com/en/) tool:
+
+```
+git clone https://github.com/devtools-html/debugger.html.git
+cd debugger.html
+yarn install
+```
+
+Once everything is installed, you can start the development server with:
+
+```bash
+cd packages/devtools-reps/
+yarn start
+```
+
+and navigate to `http://localhost:8000` to access the dashboard.
+
+## Running the demo app
+
+Navigating to the above address will have landed you on an empty launchpad UI:
+
+![Image of empty launchpad](./assets/images/empty-launchpad.png)
+
+Click on the _Launch Firefox_ button. This should launch Firefox with a dedicated profile, listening for connections on port 6080.
+
+The UI should update automatically and show you at least one tab for the new Firefox instance. If it doesn't, reload the dashboard.
+
+![Image of launchpad](./assets/images/launchpad-app.png)
+
+Click on any of the tabs. This should open the demo app:
+
+![Image of demo app](./assets/images/demo-app.png)
+
+Then you can type any expression in the input field. They will be evaluated against the target tab selected in the previous steps (so if there specific objects on window on this webpage, you can check how they are represented with reps etc, ...).
+
+## Running the tests
+
+Reps tests are written with jest.
+
+They are run on every pull request with Circle CI, and you can run them locally by executing `yarn test` from /packages/devtools-reps.
+
+## History
+
+The Reps project was ported to Github January 18th, 2017. You can view the history of a file after that date on [github][history] or by running this query:
+
+```bash
+git log --before "2017-1-17" devtools/client/shared/components/reps
+```
+
+They were first moved to the [devtools-reps][gh-devtools-reps] repository, then to the [devtools-core][gh-devtools-core] one, before being migrated to this repository.
+
+[history]: https://github.com/mozilla/gecko-dev/commits/master/devtools/client/shared/components/reps
+[gh-devtools-reps]:
+https://github.com/devtools-html/reps/commits/master
+[gh-devtools-core]:
+https://github.com/devtools-html/devtools-core/commits/5ba3d6f6a44def9978a983edd6f2f89747dca2c7/packages/devtools-reps
+
+## License
+
+[MPL 2](./LICENSE)
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/assets/README.md
@@ -0,0 +1,1 @@
+The assets directory is mandatory to run `../bin/publish-assets.js`.
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5d114d4ccca2078740fd12a2a31bbf95f39afa2
GIT binary patch
literal 87062
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b439184495807d84bdacaf029c6fa9f8e1fd58d8
GIT binary patch
literal 71842
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
RAF?q3fv2mV%Q~loCIB(Hxa0r;
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dd05f51b2fbfed7523fdeb8bf27f919f64eca0ec
GIT binary patch
literal 98895
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
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/bin/dev-server.js
@@ -0,0 +1,25 @@
+/* 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/. */
+
+const path = require("path");
+const toolbox = require("devtools-launchpad/index");
+const serve = require("express-static");
+const config = require("../config");
+
+let webpackConfig = require("../webpack.config");
+
+let { app } = toolbox.startDevServer(config, webpackConfig, __dirname);
+
+// Serve devtools-reps images
+app.use(
+  "/devtools-reps/images/",
+  serve(path.join(__dirname, "../src/shared/images"))
+);
+
+// As well as devtools-components ones, with a different path, which we are going to
+// write in the postCSS config in development mode.
+app.use(
+  "/devtools-components/images/",
+  serve(path.join(__dirname, "../../../node_modules/devtools-components/src/images"))
+);
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/config.js
@@ -0,0 +1,16 @@
+module.exports = {
+  "title": "Reps",
+  "hotReloading": true,
+  "defaultURL": "https://nchevobbe.github.io/demo/console-test-app.html",
+  "environment": "development",
+  "theme": "light",
+  "firefox": {
+    "webSocketConnection": false,
+    "host": "localhost",
+    "webSocketPort": 9000,
+    "tcpPort": 6080,
+  },
+  "development": {
+    "serverPort": 8000
+  }
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/jest.config.js
@@ -0,0 +1,26 @@
+const { resolve } = require("path");
+const rootDir = resolve(__dirname, "src");
+module.exports = {
+  rootDir,
+  displayName: "devtools-reps test",
+  setupFiles: [
+    "<rootDir>/../../../src/test/__mocks__/request-animation-frame.js",
+    "<rootDir>/test/__mocks__/selection.js",
+    "<rootDir>/test/setup.js"
+  ],
+  setupTestFrameworkScriptFile: "<rootDir>/test/setup-file.js",
+  testMatch: ["**/tests/**/*.js"],
+  testPathIgnorePatterns: [
+    "/node_modules/",
+    "<rootDir>/test/",
+    "<rootDir>/reps/tests/test-helpers",
+    "<rootDir>/utils/tests/fixtures/",
+    "<rootDir>/object-inspector/tests/__mocks__/",
+    "<rootDir>/object-inspector/tests/test-utils"
+  ],
+  testURL: "http://localhost/",
+  transformIgnorePatterns: ["node_modules/(?!devtools-)"],
+  moduleNameMapper: {
+    "\\.css$": "<rootDir>/../../../src/test/__mocks__/styleMock.js"
+  }
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/package.json
@@ -0,0 +1,56 @@
+{
+  "name": "devtools-reps",
+  "version": "0.23.0",
+  "description": "Devtools Reps",
+  "main": "src/index.js",
+  "scripts": {
+    "start": "node bin/dev-server.js",
+    "lint-js": "eslint src",
+    "firefox": "./node_modules/.bin/start-firefox --start --location https://devtools-html.github.io/debugger-examples/",
+    "chrome": "./node_modules/.bin/start-chrome",
+    "license-check": "devtools-license-check",
+    "test": "jest --projects jest.config.js"
+  },
+  "author": "",
+  "license": "MPL-2.0",
+  "repository": {
+    "url": "git://github.com/devtools-html/reps.git",
+    "type": "git"
+  },
+  "engineStrict": true,
+  "engines": {
+    "node": ">=8.9.4"
+  },
+  "dependencies": {
+    "classnames": "^2.2.5",
+    "devtools-components": "^0.6.0",
+    "lodash": "^4.17.2",
+    "prop-types": "^15.6.0",
+    "react": "^16.4.1",
+    "react-dom": "^16.4.1",
+    "react-dom-factories": "^1.0.2",
+    "react-redux": "^5.0.7",
+    "redux": "^3.7.2"
+  },
+  "devDependencies": {
+    "@sucrase/webpack-object-rest-spread-plugin": "^1.0.0",
+    "babel-plugin-syntax-object-rest-spread": "^6.13.0",
+    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
+    "babel-preset-react": "^6.24.1",
+    "devtools-config": "^0.0.16",
+    "devtools-launchpad": "^0.0.141",
+    "devtools-license-check": "^0.7.0",
+    "devtools-modules": "~1.1.0",
+    "devtools-services": "^0.0.1",
+    "enzyme": "^3.3.0",
+    "enzyme-adapter-react-16": "^1.1.1",
+    "enzyme-to-json": "^3.3.1",
+    "eslint": "^5.0.0",
+    "eslint-plugin-mozilla": "1.0.4",
+    "fs-extra": "^7.0.0",
+    "immutable": "^3.8.2",
+    "postcss-url-mapper": "^1.2.0",
+    "react-immutable-proptypes": "^2.1.0",
+    "redux-logger": "=3.0.6"
+  }
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/postcss.config.js
@@ -0,0 +1,35 @@
+/* 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/. */
+
+const mapUrl = require("postcss-url-mapper");
+const MC_PATH = "resource://devtools/client/shared/components/reps/images/";
+const EXPRESS_PATH = "/devtools-reps/images/";
+const IMAGES = ["open-inspector.svg", "jump-definition.svg", "input.svg"];
+
+
+function mapUrlProduction(url, type) {
+  for (const img of IMAGES) {
+    url = url.replace(`/images/${img}`, `${MC_PATH}${img}`);
+  }
+  return url;
+}
+
+function mapUrlDevelopment(url) {
+  for (const img of IMAGES) {
+    url = url.replace(`/images/${img}`, `${EXPRESS_PATH}${img}`);
+  }
+  return url;
+}
+
+module.exports = ({ file, options, env }) => {
+  if (env === "production") {
+    return {
+      plugins: [mapUrl(mapUrlProduction)]
+    };
+  }
+
+  return {
+    plugins: [mapUrl(mapUrlDevelopment)]
+  };
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/index.js
@@ -0,0 +1,25 @@
+/* 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/>. */
+
+const { MODE } = require("./reps/constants");
+const { REPS, getRep } = require("./reps/rep");
+const objectInspector = require("./object-inspector");
+
+const {
+  parseURLEncodedText,
+  parseURLParams,
+  maybeEscapePropertyName,
+  getGripPreviewItems
+} = require("./reps/rep-utils");
+
+module.exports = {
+  REPS,
+  getRep,
+  MODE,
+  maybeEscapePropertyName,
+  parseURLEncodedText,
+  parseURLParams,
+  getGripPreviewItems,
+  objectInspector
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/actions/expressions.js
@@ -0,0 +1,76 @@
+/* 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/>. */
+
+const constants = require("../constants");
+const { generateKey } = require("../utils/utils");
+
+function evaluateInput(input) {
+  return async function({ dispatch, client }) {
+    try {
+      const packet = await client.clientCommands.evaluate(input);
+      dispatch(addExpression(input, packet));
+    } catch (err) {
+      console.warn("Error when evaluating expression", err);
+    }
+  };
+}
+
+function addExpression(input, packet) {
+  return {
+    key: generateKey(),
+    type: constants.ADD_EXPRESSION,
+    value: {
+      input,
+      packet
+    }
+  };
+}
+
+function clearExpressions() {
+  return {
+    type: constants.CLEAR_EXPRESSIONS
+  };
+}
+
+function showResultPacket(key) {
+  return {
+    key,
+    type: constants.SHOW_RESULT_PACKET
+  };
+}
+
+function hideResultPacket(key) {
+  return {
+    key,
+    type: constants.HIDE_RESULT_PACKET
+  };
+}
+
+function createObjectClient(grip) {
+  return function({ dispatch, client }) {
+    return client.getObjectClient(grip);
+  };
+}
+
+function createLongStringClient(grip) {
+  return function({ dispatch, client }) {
+    return client.getLongStringClient(grip);
+  };
+}
+
+function releaseActor(actor) {
+  return function({ dispatch, client }) {
+    client.releaseActor(actor);
+  };
+}
+module.exports = {
+  addExpression,
+  clearExpressions,
+  evaluateInput,
+  showResultPacket,
+  hideResultPacket,
+  createObjectClient,
+  createLongStringClient,
+  releaseActor
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/actions/index.js
@@ -0,0 +1,11 @@
+/* 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/>. */
+
+const expressions = require("./expressions");
+const input = require("./input");
+
+module.exports = {
+  ...expressions,
+  ...input
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/actions/input.js
@@ -0,0 +1,39 @@
+/* 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/>. */
+
+const constants = require("../constants");
+const expressionsActions = require("./expressions");
+const { generateKey } = require("../utils/utils");
+
+function addInput(input) {
+  return ({ dispatch }) => {
+    dispatch(expressionsActions.evaluateInput(input));
+
+    dispatch({
+      key: generateKey(),
+      type: constants.ADD_INPUT,
+      value: input
+    });
+  };
+}
+
+function changeCurrentInput(input) {
+  return {
+    type: constants.CHANGE_CURRENT_INPUT,
+    value: input
+  };
+}
+
+function navigateInputHistory(dir) {
+  return {
+    type: constants.NAVIGATE_INPUT_HISTORY,
+    value: dir
+  };
+}
+
+module.exports = {
+  addInput,
+  changeCurrentInput,
+  navigateInputHistory
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/components/Console.css
@@ -0,0 +1,89 @@
+/* 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/. */
+
+main {
+  --default-border: 1px solid var(--theme-splitter-color);
+  height: 100vh;
+  display: flex;
+  flex-direction: column;
+}
+
+.expressions {
+  padding: 2em 1em;
+  flex: 1;
+  overflow-y: auto;
+}
+
+.rep-row {
+  border: var(--default-border);
+  margin-bottom: 1em;
+}
+
+.rep-input {
+  font-family: monospace;
+  background-color: var(--theme-toolbar-background-alt);
+  color: var(--theme-body-color);
+  padding: 0.5rem;
+}
+
+.rep-input:before {
+  content: "➜ ";
+}
+
+.reps {
+  display: flex;
+  flex-wrap: wrap;
+  padding: 1rem;
+  margin-bottom: 0.5rem;
+}
+
+.rep-element {
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+
+.rep-element + .rep-element {
+  margin-left: 0.5rem;
+}
+
+.rep-element[data-mode]::before {
+  content: attr(data-mode)":";
+  background-color: var(--theme-toolbar-background);
+  font-family: monospace;
+  display: inline-block;
+  font-size: 0.75rem;
+  padding: 0.1rem 0.25rem;
+  margin-right: 0.25rem;
+  border-radius: 0.25rem;
+}
+
+.packet header {
+  display: flex;
+  background-color: var(--theme-toolbar-background-alt);
+  border-top: var(--default-border);
+  color: var(--theme-body-color);
+  padding: 0.5rem;
+}
+
+.packet header::before {
+  display: inline-block;
+  padding-right: 0.5rem;
+}
+
+.packet header.packet-expanded::before {
+  content: "−";
+}
+
+.packet header.packet-collapsed::before {
+  content: "+";
+}
+
+.copy-packet-button {
+  margin-left: auto;
+  margin-right: 0.5rem;
+}
+
+.packet .packet-rep {
+  padding: 1rem;
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/components/Console.js
@@ -0,0 +1,90 @@
+/* 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/>. */
+
+const React = require("react");
+const { Component, createFactory } = React;
+const PropTypes = require("prop-types");
+const dom = require("react-dom-factories");
+const { KeyShortcuts } = require("devtools-modules");
+const shortcuts = new KeyShortcuts({ window });
+
+const { connect } = require("react-redux");
+const { bindActionCreators } = require("redux");
+const selectors = require("../selectors");
+
+const Header = createFactory(require("./Header"));
+const ResultsList = createFactory(require("./ResultsList"));
+
+require("./Console.css");
+
+class Console extends Component {
+  static get propTypes() {
+    return {
+      addInput: PropTypes.func.isRequired,
+      changeCurrentInput: PropTypes.func.isRequired,
+      clearExpressions: PropTypes.func.isRequired,
+      currentInputValue: PropTypes.string.isRequired,
+      evaluateInput: PropTypes.func.isRequired,
+      expressions: PropTypes.object.isRequired,
+      hideResultPacket: PropTypes.func.isRequired,
+      navigateInputHistory: PropTypes.func.isRequired,
+      showResultPacket: PropTypes.func.isRequired
+    };
+  }
+
+  componentDidMount() {
+    shortcuts.on("CmdOrCtrl+Shift+L", this.props.clearExpressions);
+  }
+
+  componentWillUnmount() {
+    shortcuts.off("CmdOrCtrl+Shift+L");
+  }
+
+  render() {
+    const {
+      addInput,
+      changeCurrentInput,
+      clearExpressions,
+      currentInputValue,
+      evaluateInput,
+      expressions,
+      hideResultPacket,
+      navigateInputHistory,
+      showResultPacket
+    } = this.props;
+
+    return dom.main(
+      {},
+      Header({
+        addInput,
+        changeCurrentInput,
+        clearResultsList: clearExpressions,
+        currentInputValue,
+        evaluate: evaluateInput,
+        navigateInputHistory
+      }),
+      ResultsList({
+        expressions: expressions.reverse(),
+        hideResultPacket,
+        showResultPacket
+      })
+    );
+  }
+}
+
+function mapStateToProps(state) {
+  return {
+    expressions: selectors.getExpressions(state),
+    currentInputValue: selectors.getCurrentInputValue(state)
+  };
+}
+
+function mapDispatchToProps(dispatch) {
+  return bindActionCreators(require("../actions"), dispatch);
+}
+
+module.exports = connect(
+  mapStateToProps,
+  mapDispatchToProps
+)(Console);
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/components/Header.css
@@ -0,0 +1,46 @@
+/* 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/. */
+
+.console-header {
+  background: var(--theme-highlight-pink);
+  color: white;
+  margin: 0;
+}
+
+.console-header form {
+  display: flex;
+  padding: 1rem;
+}
+
+.console-header h1 {
+  font-size: 14px;
+  font-weight: 100;
+  color: white;
+}
+
+.console-header input {
+  background-color: var(--theme-highlight-pink);
+  flex: 1;
+  border: 1px solid white;
+  color: white;
+  font-size: 1.25rem;
+  padding: 0.25rem;
+  line-height: 2rem;
+  padding-left: 1rem;
+  margin: 0 1rem;
+}
+
+.console-header ::-webkit-input-placeholder {
+  color: white;
+  font-size: 1rem;
+  line-height: 2rem;
+  margin: 0;
+}
+
+.console-header .clear-button {
+  background: rgba(255, 255, 255, 0.25);
+  border: 1px solid rgba(255, 255, 255, 0.25);
+  color: white;
+  font-size: 1.2rem;
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/components/Header.js
@@ -0,0 +1,87 @@
+/* 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/>. */
+
+const React = require("react");
+const { Component, createFactory } = React;
+const PropTypes = require("prop-types");
+const dom = require("react-dom-factories");
+const constants = require("../constants");
+const QuickLinks = createFactory(require("./QuickLinks"));
+require("./Header.css");
+
+class Header extends Component {
+  static get propTypes() {
+    return {
+      addInput: PropTypes.func.isRequired,
+      changeCurrentInput: PropTypes.func.isRequired,
+      clearResultsList: PropTypes.func.isRequired,
+      currentInputValue: PropTypes.string,
+      evaluate: PropTypes.func.isRequired,
+      navigateInputHistory: PropTypes.func.isRequired
+    };
+  }
+
+  constructor(props) {
+    super(props);
+    this.onSubmitForm = this.onSubmitForm.bind(this);
+    this.onInputChange = this.onInputChange.bind(this);
+    this.onInputKeyDown = this.onInputKeyDown.bind(this);
+    this.onClearButtonClick = this.onClearButtonClick.bind(this);
+  }
+
+  onSubmitForm(e) {
+    e.preventDefault();
+    const data = new FormData(e.target);
+    const expression = data.get("expression");
+    this.props.addInput(expression);
+  }
+
+  onInputChange(e) {
+    this.props.changeCurrentInput(e.target.value);
+  }
+
+  onInputKeyDown(e) {
+    if (["ArrowUp", "ArrowDown"].includes(e.key)) {
+      this.props.navigateInputHistory(
+        e.key === "ArrowUp" ? constants.DIR_BACKWARD : constants.DIR_FORWARD
+      );
+    }
+  }
+
+  onClearButtonClick(e) {
+    this.props.clearResultsList();
+  }
+
+  render() {
+    const { currentInputValue, evaluate } = this.props;
+
+    return dom.header(
+      { className: "console-header" },
+      dom.form(
+        { onSubmit: this.onSubmitForm },
+        dom.h1({}, "Reps"),
+        dom.input({
+          type: "text",
+          placeholder: "Enter an expression",
+          name: "expression",
+          value: currentInputValue || "",
+          autoFocus: true,
+          onChange: this.onInputChange,
+          onKeyDown: this.onInputKeyDown
+        }),
+        dom.button(
+          {
+            className: "clear-button",
+            type: "button",
+            onClick: this.onClearButtonClick
+          },
+          "Clear"
+        )
+      ),
+      QuickLinks({ evaluate })
+    );
+  }
+}
+
+module.exports = Header;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/components/QuickLinks.css
@@ -0,0 +1,20 @@
+/* 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/. */
+
+.quick-links {
+  display: flex;
+  justify-content: center;
+  flex-wrap: wrap;
+  background: rgba(255, 255, 255, 0.25);
+  padding: 0.5rem 1rem;
+}
+
+.quick-links button {
+  font-size: 1.2rem;
+  background: none;
+  border: none;
+  color: white;
+  margin: 0.5rem 0.25rem;
+  cursor: pointer;
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/components/QuickLinks.js
@@ -0,0 +1,54 @@
+/* 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/>. */
+
+const React = require("react");
+const { Component } = React;
+const PropTypes = require("prop-types");
+const dom = require("react-dom-factories");
+require("./QuickLinks.css");
+const samples = require("../samples.js");
+
+class QuickLinks extends Component {
+  static get propTypes() {
+    return {
+      evaluate: PropTypes.func.isRequired
+    };
+  }
+
+  constructor(props) {
+    super(props);
+    this.evaluateExpressions = this.evaluateExpressions.bind(this);
+    this.renderLinks = this.renderLinks.bind(this);
+  }
+
+  evaluateExpressions(expressions) {
+    expressions.forEach(expression => this.props.evaluate(expression));
+  }
+
+  renderLinks() {
+    return Object.keys(samples).map(label => {
+      const expressions = samples[label];
+      const length = expressions.length;
+      return dom.button(
+        {
+          key: label,
+          title:
+            label === "yolo"
+              ? "Add all sample expressions"
+              : `Add ${length} ${label} sample expression${
+                  length > 1 ? "s" : ""
+                }`,
+          onClick: () => this.evaluateExpressions(expressions)
+        },
+        label
+      );
+    });
+  }
+
+  render() {
+    return dom.div({ className: "quick-links" }, this.renderLinks());
+  }
+}
+
+module.exports = QuickLinks;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/components/Result.js
@@ -0,0 +1,145 @@
+/* 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/>. */
+
+const React = require("react");
+const { Component } = React;
+const PropTypes = require("prop-types");
+const dom = require("react-dom-factories");
+const { MODE } = require("../../reps/constants");
+const { ObjectInspector } = require("../../index").objectInspector;
+const { Rep } = require("../../reps/rep");
+
+class Result extends Component {
+  static get propTypes() {
+    return {
+      expression: PropTypes.object.isRequired,
+      showResultPacket: PropTypes.func.isRequired,
+      hideResultPacket: PropTypes.func.isRequired
+    };
+  }
+
+  constructor(props) {
+    super(props);
+    this.copyPacketToClipboard = this.copyPacketToClipboard.bind(this);
+    this.onHeaderClick = this.onHeaderClick.bind(this);
+    this.renderRepInAllModes = this.renderRepInAllModes.bind(this);
+    this.renderRep = this.renderRep.bind(this);
+    this.renderPacket = this.renderPacket.bind(this);
+  }
+
+  copyPacketToClipboard(e, packet) {
+    e.stopPropagation();
+
+    const textField = document.createElement("textarea");
+    textField.innerHTML = JSON.stringify(packet, null, "  ");
+    document.body.appendChild(textField);
+    textField.select();
+    document.execCommand("copy");
+    textField.remove();
+  }
+
+  onHeaderClick() {
+    const { expression } = this.props;
+    if (expression.showPacket === true) {
+      this.props.hideResultPacket();
+    } else {
+      this.props.showResultPacket();
+    }
+  }
+
+  renderRepInAllModes({ object }) {
+    return Object.keys(MODE).map(modeKey =>
+      this.renderRep({ object, modeKey })
+    );
+  }
+
+  renderRep({ object, modeKey }) {
+    const path = Symbol(modeKey + object.actor);
+
+    return dom.div(
+      {
+        className: "rep-element",
+        key: path.toString(),
+        "data-mode": modeKey
+      },
+      ObjectInspector({
+        roots: [
+          {
+            path,
+            contents: {
+              value: object
+            }
+          }
+        ],
+        autoExpandDepth: 0,
+        mode: MODE[modeKey],
+        // The following properties are optional function props called by the
+        // objectInspector on some occasions. Here we pass dull functions that
+        // only logs the parameters with which the callback was called.
+        onCmdCtrlClick: (node, { depth, event, focused, expanded }) =>
+          console.log("CmdCtrlClick", {
+            node,
+            depth,
+            event,
+            focused,
+            expanded
+          }),
+        onInspectIconClick: nodeFront =>
+          console.log("inspectIcon click", { nodeFront }),
+        onViewSourceInDebugger: location =>
+          console.log("onViewSourceInDebugger", { location }),
+        recordTelemetryEvent: (eventName, extra = {}) => {
+          console.log("📊", eventName, "📊", extra);
+        }
+      })
+    );
+  }
+
+  renderPacket(expression) {
+    const { packet, showPacket } = expression;
+    const headerClassName = showPacket ? "packet-expanded" : "packet-collapsed";
+    const headerLabel = showPacket
+      ? "Hide expression packet"
+      : "Show expression packet";
+
+    return dom.div(
+      { className: "packet" },
+      dom.header(
+        {
+          className: headerClassName,
+          onClick: this.onHeaderClick
+        },
+        headerLabel,
+        showPacket &&
+          dom.button(
+            {
+              className: "copy-packet-button",
+              onClick: e => this.copyPacketToClipboard(e, packet)
+            },
+            "Copy as JSON"
+          )
+      ),
+      showPacket &&
+        dom.div({ className: "packet-rep" }, Rep({ object: packet }))
+    );
+  }
+
+  render() {
+    const { expression } = this.props;
+    const { input, packet } = expression;
+    return dom.div(
+      { className: "rep-row" },
+      dom.div({ className: "rep-input" }, input),
+      dom.div(
+        { className: "reps" },
+        this.renderRepInAllModes({
+          object: packet.exception || packet.result
+        })
+      ),
+      this.renderPacket(expression)
+    );
+  }
+}
+
+module.exports = Result;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/components/ResultsList.js
@@ -0,0 +1,42 @@
+/* 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/>. */
+
+const React = require("react");
+const { Component, createFactory } = React;
+const PropTypes = require("prop-types");
+const dom = require("react-dom-factories");
+const ImPropTypes = require("react-immutable-proptypes");
+
+const Result = createFactory(require("./Result"));
+
+class ResultsList extends Component {
+  static get propTypes() {
+    return {
+      expressions: ImPropTypes.map.isRequired,
+      showResultPacket: PropTypes.func.isRequired,
+      hideResultPacket: PropTypes.func.isRequired
+    };
+  }
+
+  render() {
+    const { expressions, showResultPacket, hideResultPacket } = this.props;
+
+    return dom.div(
+      { className: "expressions" },
+      expressions
+        .entrySeq()
+        .toJS()
+        .map(([key, expression]) =>
+          Result({
+            key,
+            expression: expression.toJS(),
+            showResultPacket: () => showResultPacket(key),
+            hideResultPacket: () => hideResultPacket(key)
+          })
+        )
+    );
+  }
+}
+
+module.exports = ResultsList;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/constants.js
@@ -0,0 +1,19 @@
+/* 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/>. */
+
+module.exports = {
+  ADD_EXPRESSION: Symbol("ADD_EXPRESSION"),
+  LOAD_PROPERTIES: Symbol("LOAD_PROPERTIES"),
+  LOAD_ENTRIES: Symbol("LOAD_ENTRIES"),
+  EVALUATE_EXPRESSION: Symbol("EVALUATE_EXPRESSION"),
+  CLEAR_EXPRESSIONS: Symbol("CLEAR_EXPRESSIONS"),
+  SHOW_RESULT_PACKET: Symbol("SHOW_RESULT_PACKET"),
+  HIDE_RESULT_PACKET: Symbol("HIDE_RESULT_PACKET"),
+  ADD_INPUT: Symbol("ADD_INPUT"),
+  CHANGE_CURRENT_INPUT: Symbol("CHANGE_CURRENT_INPUT"),
+  NAVIGATE_INPUT_HISTORY: Symbol("NAVIGATE_INPUT_HISTORY"),
+  DIR_FORWARD: Symbol("DIR_FORWARD "),
+  DIR_BACKWARD: Symbol("DIR_BACKWARD"),
+  LS_EXPRESSIONS_KEY: "LS_EXPRESSIONS_KEY"
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/index.js
@@ -0,0 +1,62 @@
+/* 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/>. */
+
+// globals window, document
+
+require("../reps/reps.css");
+
+const React = require("react");
+const ReactDOM = require("react-dom");
+
+const { bootstrap, renderRoot } = require("devtools-launchpad");
+
+const RepsConsole = require("./components/Console");
+const { configureStore } = require("./store");
+
+require("./launchpad.css");
+
+function onConnect(connection) {
+  if (!connection) {
+    return;
+  }
+
+  const client = {
+    clientCommands: {
+      evaluate: input =>
+        new Promise(resolve => {
+          connection.tabConnection.tabTarget.activeConsole.evaluateJS(
+            input,
+            result => resolve(result)
+          );
+        })
+    },
+
+    createObjectClient: function(grip) {
+      return connection.tabConnection.threadClient.pauseGrip(grip);
+    },
+    createLongStringClient: function(grip) {
+      return connection.tabConnection.tabTarget.activeConsole.longString(grip);
+    },
+    releaseActor: function(actor) {
+      return connection.tabConnection.debuggerClient.release(actor);
+    }
+  };
+
+  const store = configureStore({
+    makeThunkArgs: (args, state) => ({ ...args, client }),
+    client
+  });
+  renderRoot(React, ReactDOM, RepsConsole, store);
+}
+
+function onConnectionError(e) {
+  const h1 = document.createElement("h1");
+  h1.innerText = `An error occured during the connection: «${e.message}»`;
+  console.warn("An error occured during the connection", e);
+  renderRoot(React, ReactDOM, h1);
+}
+
+bootstrap(React, ReactDOM)
+  .then(onConnect, onConnectionError)
+  .catch(onConnectionError);
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/launchpad.css
@@ -0,0 +1,13 @@
+/* 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/. */
+
+* {
+  box-sizing: border-box;
+}
+
+html,
+body {
+  margin: 0;
+  padding: 0;
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/reducers/expressions.js
@@ -0,0 +1,36 @@
+/* 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/>. */
+
+const constants = require("../constants");
+const Immutable = require("immutable");
+
+const initialState = Immutable.Map();
+
+function update(state = initialState, action) {
+  const { type, value, key } = action;
+
+  switch (type) {
+    case constants.ADD_EXPRESSION:
+      const newState = state.set(key, Immutable.Map(value));
+      window.localStorage.setItem(
+        constants.LS_EXPRESSIONS_KEY,
+        JSON.stringify(newState.toJS())
+      );
+      return newState;
+
+    case constants.CLEAR_EXPRESSIONS:
+      window.localStorage.removeItem(constants.LS_EXPRESSIONS_KEY);
+      return state.clear();
+
+    case constants.SHOW_RESULT_PACKET:
+      return state.mergeIn([key], { showPacket: true });
+
+    case constants.HIDE_RESULT_PACKET:
+      return state.mergeIn([key], { showPacket: false });
+  }
+
+  return state;
+}
+
+module.exports = update;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/reducers/index.js
@@ -0,0 +1,13 @@
+/* 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/>. */
+
+const expressions = require("./expressions");
+const input = require("./input");
+const { objectInspector } = require("../../index");
+
+module.exports = {
+  expressions,
+  input,
+  objectInspector: objectInspector.reducer.default
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/reducers/input.js
@@ -0,0 +1,63 @@
+/* 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/>. */
+
+const constants = require("../constants");
+const Immutable = require("immutable");
+
+const initialState = Immutable.Map({
+  currentValue: "",
+  currentNavigationKey: null,
+  history: Immutable.OrderedMap()
+});
+
+function update(state = initialState, action) {
+  const { type, value, key } = action;
+
+  const currentValue = state.get("currentValue");
+  const currentNavigationKey = state.get("currentNavigationKey");
+  const history = state.get("history");
+
+  switch (type) {
+    case constants.ADD_INPUT:
+      return state.withMutations(map => {
+        map
+          .set("history", history.set(key, value))
+          .set("currentValue", "")
+          .set("currentNavigationKey", null);
+      });
+
+    case constants.CHANGE_CURRENT_INPUT:
+      return state.set("currentValue", value);
+
+    case constants.NAVIGATE_INPUT_HISTORY:
+      const keys = history.reverse().keySeq();
+      const navigationIndex = keys.indexOf(currentNavigationKey);
+      const dir = value;
+
+      const newNavigationIndex =
+        dir === constants.DIR_BACKWARD
+          ? navigationIndex + 1
+          : navigationIndex - 1;
+
+      const newNavigationKey =
+        newNavigationIndex >= 0 ? keys.get(newNavigationIndex) : null;
+
+      const fallbackValue = dir === constants.DIR_BACKWARD ? currentValue : "";
+      const fallbackNavigationKey =
+        dir === constants.DIR_BACKWARD ? currentNavigationKey : -1;
+
+      return state.withMutations(map => {
+        map
+          .set("currentValue", history.get(newNavigationKey) || fallbackValue)
+          .set(
+            "currentNavigationKey",
+            newNavigationKey || fallbackNavigationKey
+          );
+      });
+  }
+
+  return state;
+}
+
+module.exports = update;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/samples.js
@@ -0,0 +1,196 @@
+/* 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/>. */
+
+const samples = {
+  array: ['x = [1, "2", {three: 3}, []]', "x = []"],
+
+  boolean: ["true", "false"],
+
+  date: ["new Date()"],
+
+  function: ["x = () => { 2 }"],
+
+  node: [
+    `x = document.createElement("div");
+     x.setAttribute("id", "myNodeId");
+     x.setAttribute("class", "my-class and another");
+     x.textContent = "My node id";
+     x;`,
+    `x = document.createElementNS("http://www.w3.org/2000/svg", "clipPath");
+     x.setAttribute("id", "myNodeId");
+     x.setAttribute("class", "my-class and another");
+     x;`,
+    "document.createComment('my comment node')",
+    "document.createTextNode('foo')",
+    `x = document.createAttribute('foo');
+     x.value = "bar";
+     x;`
+  ],
+
+  "map & sets": [
+    `
+      ({
+        "small set": new Set([1,2,3,4]),
+        "small map": new Map([
+          ["a", {suba: 1}],
+          [{bkey: "b"}, 2]]
+        ),
+        "medium set": new Set(
+          Array.from({length: 20})
+            .map((el, i) => ({
+              [String.fromCharCode(65 + i)]: i + 1,
+              test: {
+                [i] : "item" + i
+              }
+            })
+          )),
+        "medium map": new Map(
+          Array
+          .from({length: 20})
+          .map((el, i) => [
+            {
+              [String.fromCharCode(65 + i)]: i + 1,
+              test: {[i] : "item" + i, body: document.body}
+            },
+            Symbol(i + 1)
+          ])
+        ),
+        "large set": new Set(
+          Array.from({length: 2000})
+          .map((el, i) => ({
+            [String.fromCharCode(65 + i)]: i + 1,
+            test: {
+              [i] : "item" + i
+            }
+          })
+        )),
+        "large map": new Map(
+          Array
+          .from({length: 2000})
+          .map((el, i) => [
+            {
+              [String.fromCharCode(65 + i)]: i + 1,
+              document
+            },
+            Symbol(i + 1)
+          ])
+        ),
+      })
+    `
+  ],
+
+  number: ["1", "-1", "-3.14", "0", "-0", "Infinity", "-Infinity", "NaN"],
+
+  object: [
+    "x = {a: 2}",
+    `
+Object.create(null, Object.getOwnPropertyDescriptors({
+  get myStringGetter() {
+    return "hello"
+  },
+  get myNumberGetter() {
+    return 123;
+  },
+  get myUndefinedGetter() {
+    return undefined;
+  },
+  get myNullGetter() {
+    return null;
+  },
+  get myObjectGetter() {
+    return {foo: "bar"}
+  },
+  get myArrayGetter() {
+    return Array.from({length: 100000}, (_, i) => i)
+  },
+  get myMapGetter() {
+    return new Map([["foo", {bar: "baz"}]])
+  },
+  get mySetGetter() {
+    return new Set([1, {bar: "baz"}]);
+  },
+  get myProxyGetter() {
+    var handler = { get: function(target, name) {
+      return name in target ? target[name] : 37; }
+    };
+    return new Proxy({a: 1}, handler);
+  },
+  get myThrowingGetter() {
+    return a.b.c.d.e.f;
+  },
+  get myLongStringGetter() {
+    return "ab ".repeat(1e5)
+  },
+  set mySetterOnly(x) {}
+}))
+`
+  ],
+
+  promise: [
+    "Promise.resolve([1, 2, 3])",
+    "Promise.reject(new Error('This is wrong'))",
+    "new Promise(() => {})"
+  ],
+
+  proxy: [
+    `
+    var handler = {
+        get: function(target, name) {
+            return name in target ?
+                target[name] :
+                37;
+        }
+    };
+    new Proxy({a: 1}, handler);
+  `
+  ],
+
+  regexp: ["new RegExp('^[-]?[0-9]+[.]?[0-9]+$')"],
+
+  string: [
+    "'foo'",
+    "'bar\nbaz\nyup'",
+    "'http://example.com'",
+    "'blah'.repeat(10000)",
+    "'http://example.com '.repeat(1000)"
+  ],
+
+  symbol: ["Symbol('foo')", "Symbol()"],
+
+  errors: [
+    "throw new Error('This is a simple error message.');",
+    `
+      var error = new Error('Complicated error message');
+      error.stack =
+        "unserializeProfileOfArbitraryFormat@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:26705:11\\n" +
+        "_callee7$@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:27948:27\\n" +
+        "tryCatch@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:64198:37\\n" +
+        "invoke@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:64432:22\\n" +
+        "defineIteratorMethods/</prototype[method]@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:64250:16\\n" +
+        "step@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:5257:22\\n" +
+        "step/<@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:5268:13\\n" +
+        "run@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:64973:22\\n" +
+        "notify/<@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:64986:28\\n" +
+        "flush@http://localhost:4242/2969802751c9e11c0c2d.bundle.js:65282:9\\n";
+
+      error;
+    `,
+    `
+    var error = new Error('Complicated error message');
+    error.stack =
+      "onPacket@resource://devtools/shared/base-loader.js -> resource://devtools/shared/client/debugger-client.js:856:9\\n" +
+      "send/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/transport/transport.js:569:13\\n" +
+      "exports.makeInfallible/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/ThreadSafeDevToolsUtils.js:109:14\\n" +
+      "exports.makeInfallible/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/ThreadSafeDevToolsUtils.js:109:14\\n";
+
+    error;
+    `
+  ]
+};
+
+samples.yolo = Object.keys(samples).reduce((res, key) => {
+  return [...res, ...samples[key]];
+}, []);
+
+module.exports = samples;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/selectors/index.js
@@ -0,0 +1,20 @@
+/* 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/>. */
+
+function getExpressions(state) {
+  return state.expressions;
+}
+
+function getInputState(state) {
+  return state.input;
+}
+
+function getCurrentInputValue(state) {
+  return getInputState(state).get("currentValue");
+}
+
+module.exports = {
+  getCurrentInputValue,
+  getExpressions
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/store.js
@@ -0,0 +1,21 @@
+/* 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/>. */
+
+const { applyMiddleware, combineReducers, createStore } = require("redux");
+
+const { logger } = require("redux-logger");
+const { promise } = require("./utils/redux/middleware/promise");
+const { thunk } = require("./utils/redux/middleware/thunk");
+const reducers = require("./reducers");
+
+function configureStore(options, client) {
+  return createStore(
+    combineReducers(reducers),
+    applyMiddleware(thunk(options.makeThunkArgs), promise, logger)
+  );
+}
+
+module.exports = {
+  configureStore
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/utils/redux/middleware/promise.js
@@ -0,0 +1,57 @@
+/* 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/>. */
+
+const { executeSoon, filterByKey } = require("../../utils");
+
+const PROMISE = (exports.PROMISE = "@@dispatch/promise");
+let seqIdVal = 1;
+
+function seqIdGen() {
+  return seqIdVal++;
+}
+
+function promiseMiddleware({ dispatch, getState }) {
+  return next => action => {
+    if (!action || !Object.keys(action).includes(PROMISE)) {
+      return next(action);
+    }
+
+    const promiseInst = action[PROMISE];
+    const seqId = seqIdGen().toString();
+
+    // Create a new action that doesn't have the promise field and has
+    // the `seqId` field that represents the sequence id
+    action = Object.assign(filterByKey(action, key => key !== PROMISE), {
+      seqId
+    });
+
+    dispatch(Object.assign({}, action, { status: "start" }));
+
+    // Return the promise so action creators can still compose if they want to.
+    return Promise.resolve(promiseInst)
+      .finally(() => new Promise(resolve => executeSoon(resolve)))
+      .then(
+        value => {
+          dispatch(
+            Object.assign({}, action, {
+              status: "done",
+              value: value
+            })
+          );
+          return value;
+        },
+        error => {
+          dispatch(
+            Object.assign({}, action, {
+              status: "error",
+              error: error.message || error
+            })
+          );
+          return Promise.reject(error);
+        }
+      );
+  };
+}
+
+exports.promise = promiseMiddleware;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/utils/redux/middleware/thunk.js
@@ -0,0 +1,23 @@
+/* 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/>. */
+
+/**
+ * A middleware that allows thunks (functions) to be dispatched. If
+ * it's a thunk, it is called with an argument that contains
+ * `dispatch`, `getState`, and any additional args passed in via the
+ * middleware constructure. This allows the action to create multiple
+ * actions (most likely asynchronously).
+ */
+function thunk(makeArgs) {
+  return ({ dispatch, getState }) => {
+    const args = { dispatch, getState };
+
+    return next => action => {
+      return typeof action === "function"
+        ? action(makeArgs ? makeArgs(args, getState()) : args)
+        : next(action);
+    };
+  };
+}
+exports.thunk = thunk;
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/launchpad/utils/utils.js
@@ -0,0 +1,60 @@
+/* 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/>. */
+
+/**
+ * Returns an object with a promise and its resolve and reject function,
+ * so they can be called outside of the promise callback.
+ *
+ * @returns {{resolve: function, reject: function, promise: Promise}}
+ */
+function defer() {
+  let resolve, reject;
+  const promise = new Promise((res, rej) => {
+    resolve = res;
+    reject = rej;
+  });
+
+  return {
+    resolve,
+    reject,
+    promise
+  };
+}
+
+/**
+ * Takes a function and executes it on the next tick.
+ *
+ * @param function fn
+ */
+function executeSoon(fn) {
+  setTimeout(fn, 0);
+}
+
+/**
+ * Takes an object into another object,
+ * filtered on its keys by the given predicate.
+ *
+ * @param object obj
+ * @param function predicate
+ * @returns object
+ */
+function filterByKey(obj, predicate) {
+  return Object.keys(obj).reduce((res, key) => {
+    if (predicate(key)) {
+      return Object.assign(res, { [key]: obj[key] });
+    }
+    return res;
+  }, {});
+}
+
+function generateKey() {
+  return `${performance.now()}`;
+}
+
+module.exports = {
+  defer,
+  executeSoon,
+  filterByKey,
+  generateKey
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/actions.js
@@ -0,0 +1,133 @@
+/* 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/>. */
+
+// @flow
+
+import type { GripProperties, Node, Props, ReduxAction } from "./types";
+
+const { loadItemProperties } = require("./utils/load-properties");
+const { getLoadedProperties, getActors } = require("./reducer");
+
+type Dispatch = ReduxAction => void;
+
+type ThunkArg = {
+  getState: () => {},
+  dispatch: Dispatch
+};
+
+/**
+ * This action is responsible for expanding a given node, which also means that
+ * it will call the action responsible to fetch properties.
+ */
+function nodeExpand(node: Node, actor) {
+  return async ({ dispatch, getState }: ThunkArg) => {
+    dispatch({ type: "NODE_EXPAND", data: { node } });
+    dispatch(nodeLoadProperties(node, actor));
+  };
+}
+
+function nodeCollapse(node: Node) {
+  return {
+    type: "NODE_COLLAPSE",
+    data: { node }
+  };
+}
+
+/*
+ * This action checks if we need to fetch properties, entries, prototype and
+ * symbols for a given node. If we do, it will call the appropriate ObjectClient
+ * functions.
+ */
+function nodeLoadProperties(node: Node, actor) {
+  return async ({ dispatch, client, getState }: ThunkArg) => {
+    const state = getState();
+    const loadedProperties = getLoadedProperties(state);
+    if (loadedProperties.has(node.path)) {
+      return;
+    }
+
+    try {
+      const properties = await loadItemProperties(
+        node,
+        client.createObjectClient,
+        client.createLongStringClient,
+        loadedProperties
+      );
+
+      dispatch(nodePropertiesLoaded(node, actor, properties));
+    } catch (e) {
+      console.error(e);
+    }
+  };
+}
+
+function nodePropertiesLoaded(
+  node: Node,
+  actor?: string,
+  properties: GripProperties
+) {
+  return {
+    type: "NODE_PROPERTIES_LOADED",
+    data: { node, actor, properties }
+  };
+}
+
+function closeObjectInspector() {
+  return async ({ getState, client }: ThunkArg) => {
+    releaseActors(getState(), client);
+  };
+}
+
+/*
+ * This action is dispatched when the `roots` prop, provided by a consumer of
+ * the ObjectInspector (inspector, console, …), is modified. It will clean the
+ * internal state properties (expandedPaths, loadedProperties, …) and release
+ * the actors consumed with the previous roots.
+ * It takes a props argument which reflects what is passed by the upper-level
+ * consumer.
+ */
+function rootsChanged(props: Props) {
+  return async ({ dispatch, client, getState }: ThunkArg) => {
+    releaseActors(getState(), client);
+    dispatch({
+      type: "ROOTS_CHANGED",
+      data: props
+    });
+  };
+}
+
+function releaseActors(state, client) {
+  const actors = getActors(state);
+  for (const actor of actors) {
+    client.releaseActor(actor);
+  }
+}
+
+function invokeGetter(node: Node, grip: object, getterName: string) {
+  return async ({ dispatch, client, getState }: ThunkArg) => {
+    try {
+      const objectClient = client.createObjectClient(grip);
+      const result = await objectClient.getPropertyValue(getterName);
+      dispatch({
+        type: "GETTER_INVOKED",
+        data: {
+          node,
+          result
+        }
+      });
+    } catch (e) {
+      console.error(e);
+    }
+  };
+}
+
+module.exports = {
+  closeObjectInspector,
+  invokeGetter,
+  nodeExpand,
+  nodeCollapse,
+  nodeLoadProperties,
+  nodePropertiesLoaded,
+  rootsChanged
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/components/ObjectInspector.css
@@ -0,0 +1,53 @@
+/* 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/. */
+
+.tree.object-inspector .node.object-node {
+  display: inline-block;
+}
+
+.tree.object-inspector .object-label,
+.tree.object-inspector .object-label * {
+  color: var(--theme-highlight-blue);
+}
+
+.tree.object-inspector .node .unavailable {
+  color: var(--theme-comment);
+}
+
+.tree.object-inspector .lessen,
+.tree.object-inspector .lessen *,
+.tree.object-inspector .lessen .object-label,
+.tree.object-inspector .lessen .object-label * {
+  color: var(--theme-comment);
+}
+
+.tree.object-inspector .block .object-label,
+.tree.object-inspector .block .object-label * {
+  color: var(--theme-body-color);
+}
+
+.tree.object-inspector .block .object-label:before {
+  content: "☲ ";
+  font-size: 1.1em;
+}
+
+.object-inspector .object-delimiter {
+  color: var(--theme-comment);
+}
+
+.object-inspector .tree-node .arrow {
+  display: inline-block;
+  vertical-align: middle;
+}
+
+/* Focused styles */
+.tree.object-inspector .tree-node.focused * {
+  color: inherit;
+}
+
+.tree-node.focused button.jump-definition,
+.tree-node.focused button.open-inspector,
+.tree-node.focused button.invoke-getter {
+  background-color: currentColor;
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/components/ObjectInspector.js
@@ -0,0 +1,289 @@
+/* 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/>. */
+
+// @flow
+
+const { Component, createFactory, createElement } = require("react");
+const { connect } = require("react-redux");
+const actions = require("../actions");
+
+const selectors = require("../reducer");
+
+import Components from "devtools-components";
+const Tree = createFactory(Components.Tree);
+require("./ObjectInspector.css");
+
+const ObjectInspectorItem = createFactory(require("./ObjectInspectorItem"));
+
+const classnames = require("classnames");
+
+const Utils = require("../utils");
+const { renderRep, shouldRenderRootsInReps } = Utils;
+const {
+  getChildrenWithEvaluations,
+  getActor,
+  getParent,
+  nodeIsPrimitive,
+  nodeHasGetter,
+  nodeHasSetter
+} = Utils.node;
+
+import type { CachedNodes, Props } from "../types";
+
+type DefaultProps = {
+  autoExpandAll: boolean,
+  autoExpandDepth: number
+};
+
+// This implements a component that renders an interactive inspector
+// for looking at JavaScript objects. It expects descriptions of
+// objects from the protocol, and will dynamically fetch children
+// properties as objects are expanded.
+//
+// If you want to inspect a single object, pass the name and the
+// protocol descriptor of it:
+//
+//  ObjectInspector({
+//    name: "foo",
+//    desc: { writable: true, ..., { value: { actor: "1", ... }}},
+//    ...
+//  })
+//
+// If you want multiple top-level objects (like scopes), you can pass
+// an array of manually constructed nodes as `roots`:
+//
+//  ObjectInspector({
+//    roots: [{ name: ... }, ...],
+//    ...
+//  });
+
+// There are 3 types of nodes: a simple node with a children array, an
+// object that has properties that should be children when they are
+// fetched, and a primitive value that should be displayed with no
+// children.
+
+class ObjectInspector extends Component<Props> {
+  static defaultProps: DefaultProps;
+  constructor(props: Props) {
+    super();
+    this.cachedNodes = new Map();
+
+    const self: any = this;
+
+    self.getItemChildren = this.getItemChildren.bind(this);
+    self.isNodeExpandable = this.isNodeExpandable.bind(this);
+    self.setExpanded = this.setExpanded.bind(this);
+    self.focusItem = this.focusItem.bind(this);
+    self.getRoots = this.getRoots.bind(this);
+    self.getNodeKey = this.getNodeKey.bind(this);
+  }
+
+  componentWillMount() {
+    this.roots = this.props.roots;
+    this.focusedItem = this.props.focusedItem;
+  }
+
+  componentWillUpdate(nextProps) {
+    this.removeOutdatedNodesFromCache(nextProps);
+
+    if (this.roots !== nextProps.roots) {
+      // Since the roots changed, we assume the properties did as well,
+      // so we need to cleanup the component internal state.
+      this.roots = nextProps.roots;
+      this.focusedItem = nextProps.focusedItem;
+      if (this.props.rootsChanged) {
+        this.props.rootsChanged();
+      }
+      return;
+    }
+  }
+
+  removeOutdatedNodesFromCache(nextProps) {
+    // When the roots changes, we can wipe out everything.
+    if (this.roots !== nextProps.roots) {
+      this.cachedNodes.clear();
+      return;
+    }
+
+    // If there are new evaluations, we want to remove the existing cached
+    // nodes from the cache.
+    if (nextProps.evaluations > this.props.evaluations) {
+      for (const key of nextProps.evaluations.keys()) {
+        if (!this.props.evaluations.has(key)) {
+          this.cachedNodes.delete(key);
+        }
+      }
+    }
+  }
+
+  shouldComponentUpdate(nextProps: Props) {
+    const { expandedPaths, loadedProperties, evaluations } = this.props;
+
+    // We should update if:
+    // - there are new loaded properties
+    // - OR there are new evaluations
+    // - OR the expanded paths number changed, and all of them have properties
+    //      loaded
+    // - OR the expanded paths number did not changed, but old and new sets
+    //      differ
+    // - OR the focused node changed.
+    return (
+      loadedProperties.size !== nextProps.loadedProperties.size ||
+      evaluations.size !== nextProps.evaluations.size ||
+      (expandedPaths.size !== nextProps.expandedPaths.size &&
+        [...nextProps.expandedPaths].every(path =>
+          nextProps.loadedProperties.has(path)
+        )) ||
+      (expandedPaths.size === nextProps.expandedPaths.size &&
+        [...nextProps.expandedPaths].some(key => !expandedPaths.has(key))) ||
+      this.focusedItem !== nextProps.focusedItem ||
+      this.roots !== nextProps.roots
+    );
+  }
+
+  componentWillUnmount() {
+    this.props.closeObjectInspector();
+  }
+
+  props: Props;
+  cachedNodes: CachedNodes;
+
+  getItemChildren(item: Node): Array<Node> | NodeContents | null {
+    const { loadedProperties, evaluations } = this.props;
+    const { cachedNodes } = this;
+
+    return getChildrenWithEvaluations({
+      evaluations,
+      loadedProperties,
+      cachedNodes,
+      item
+    });
+  }
+
+  getRoots(): Array<Node> {
+    return this.props.roots;
+  }
+
+  getNodeKey(item: Node): string {
+    return item.path && typeof item.path.toString === "function"
+      ? item.path.toString()
+      : JSON.stringify(item);
+  }
+
+  isNodeExpandable(item: Node): boolean {
+    if (nodeIsPrimitive(item)) {
+      return false;
+    }
+
+    if (nodeHasSetter(item) || nodeHasGetter(item)) {
+      return false;
+    }
+
+    return true;
+  }
+
+  setExpanded(item: Node, expand: boolean) {
+    if (!this.isNodeExpandable(item)) {
+      return;
+    }
+
+    const {
+      nodeExpand,
+      nodeCollapse,
+      recordTelemetryEvent,
+      roots
+    } = this.props;
+
+    if (expand === true) {
+      const actor = getActor(item, roots);
+      nodeExpand(item, actor);
+      if (recordTelemetryEvent) {
+        recordTelemetryEvent("object_expanded");
+      }
+    } else {
+      nodeCollapse(item);
+    }
+  }
+
+  focusItem(item: Node) {
+    const { focusable = true, onFocus } = this.props;
+
+    if (focusable && this.focusedItem !== item) {
+      this.focusedItem = item;
+      this.forceUpdate();
+
+      if (onFocus) {
+        onFocus(item);
+      }
+    }
+  }
+
+  render() {
+    const {
+      autoExpandAll = true,
+      autoExpandDepth = 1,
+      focusable = true,
+      disableWrap = false,
+      expandedPaths,
+      inline
+    } = this.props;
+
+    return Tree({
+      className: classnames({
+        inline,
+        nowrap: disableWrap,
+        "object-inspector": true
+      }),
+
+      autoExpandAll,
+      autoExpandDepth,
+
+      isExpanded: item => expandedPaths && expandedPaths.has(item.path),
+      isExpandable: this.isNodeExpandable,
+      focused: this.focusedItem,
+
+      getRoots: this.getRoots,
+      getParent,
+      getChildren: this.getItemChildren,
+      getKey: this.getNodeKey,
+
+      onExpand: item => this.setExpanded(item, true),
+      onCollapse: item => this.setExpanded(item, false),
+      onFocus: focusable ? this.focusItem : null,
+
+      renderItem: (item, depth, focused, arrow, expanded) =>
+        ObjectInspectorItem({
+          ...this.props,
+          item,
+          depth,
+          focused,
+          arrow,
+          expanded,
+          setExpanded: this.setExpanded
+        })
+    });
+  }
+}
+
+function mapStateToProps(state, props) {
+  return {
+    expandedPaths: selectors.getExpandedPaths(state),
+    loadedProperties: selectors.getLoadedProperties(state),
+    evaluations: selectors.getEvaluations(state)
+  };
+}
+
+const OI = connect(
+  mapStateToProps,
+  actions
+)(ObjectInspector);
+
+module.exports = (props: Props) => {
+  const { roots } = props;
+  if (shouldRenderRootsInReps(roots)) {
+    return renderRep(roots[0], props);
+  }
+
+  return createElement(OI, props);
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/components/ObjectInspectorItem.js
@@ -0,0 +1,308 @@
+/* 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/>. */
+
+// @flow
+
+const { Component } = require("react");
+const dom = require("react-dom-factories");
+
+import Services from "devtools-services";
+const { appinfo } = Services;
+const isMacOS = appinfo.OS === "Darwin";
+
+const classnames = require("classnames");
+const { MODE } = require("../../reps/constants");
+
+const Utils = require("../utils");
+
+const {
+  getValue,
+  nodeHasAccessors,
+  nodeHasProperties,
+  nodeIsBlock,
+  nodeIsDefaultProperties,
+  nodeIsFunction,
+  nodeIsGetter,
+  nodeIsMapEntry,
+  nodeIsMissingArguments,
+  nodeIsOptimizedOut,
+  nodeIsPrimitive,
+  nodeIsPrototype,
+  nodeIsSetter,
+  nodeIsUninitializedBinding,
+  nodeIsUnmappedBinding,
+  nodeIsUnscopedBinding,
+  nodeIsWindow,
+  nodeIsLongString,
+  nodeHasFullText,
+  nodeHasGetter,
+  getNonPrototypeParentGripValue
+} = Utils.node;
+
+type Props = {
+  item: Node,
+  depth: number,
+  expanded: boolean,
+  focused: boolean,
+  arrow: ReactElement,
+  setExpanded: (item: Node, expanded: boolean) => void,
+  mode: Mode,
+  dimTopLevelWindow: boolean,
+  invokeGetter: () => void,
+  onDoubleClick: ?(
+    item: Node,
+    options: {
+      depth: number,
+      focused: boolean,
+      expanded: boolean
+    }
+  ) => any,
+  onCmdCtrlClick: ?(
+    item: Node,
+    options: {
+      depth: number,
+      event: SyntheticEvent,
+      focused: boolean,
+      expanded: boolean
+    }
+  ) => any,
+  onLabelClick: ?(
+    item: Node,
+    options: {
+      depth: number,
+      focused: boolean,
+      expanded: boolean,
+      setExpanded: (Node, boolean) => any
+    }
+  ) => any
+};
+
+class ObjectInspectorItem extends Component<Props> {
+  // eslint-disable-next-line complexity
+  getLabelAndValue(): {
+    value?: string | Element,
+    label?: string
+  } {
+    const { item, depth, expanded, mode } = this.props;
+
+    const label = item.name;
+    const isPrimitive = nodeIsPrimitive(item);
+
+    if (nodeIsOptimizedOut(item)) {
+      return {
+        label,
+        value: dom.span({ className: "unavailable" }, "(optimized away)")
+      };
+    }
+
+    if (nodeIsUninitializedBinding(item)) {
+      return {
+        label,
+        value: dom.span({ className: "unavailable" }, "(uninitialized)")
+      };
+    }
+
+    if (nodeIsUnmappedBinding(item)) {
+      return {
+        label,
+        value: dom.span({ className: "unavailable" }, "(unmapped)")
+      };
+    }
+
+    if (nodeIsUnscopedBinding(item)) {
+      return {
+        label,
+        value: dom.span({ className: "unavailable" }, "(