node-reps.js (1420B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 loader.lazyGetter(this, "MODE", function () { 8 return ChromeUtils.importESModule( 9 "resource://devtools/client/shared/components/reps/index.mjs" 10 ).MODE; 11 }); 12 13 loader.lazyGetter(this, "ElementNode", function () { 14 return ChromeUtils.importESModule( 15 "resource://devtools/client/shared/components/reps/reps/element-node.mjs" 16 ); 17 }); 18 19 loader.lazyGetter(this, "TextNode", function () { 20 return ChromeUtils.importESModule( 21 "resource://devtools/client/shared/components/reps/reps/text-node.mjs" 22 ); 23 }); 24 25 loader.lazyRequireGetter( 26 this, 27 "translateNodeFrontToGrip", 28 "resource://devtools/client/inspector/shared/utils.js", 29 true 30 ); 31 32 /** 33 * Creates either an ElementNode or a TextNode rep given a nodeFront. By default the 34 * rep is created in TINY mode. 35 * 36 * @param {NodeFront} nodeFront 37 * The node front to create the element for. 38 * @param {object} props 39 * Props to pass to the rep. 40 */ 41 function getNodeRep(nodeFront, props = {}) { 42 const object = translateNodeFrontToGrip(nodeFront); 43 const { rep } = ElementNode.supportsObject(object) ? ElementNode : TextNode; 44 45 return rep({ 46 object, 47 mode: MODE.TINY, 48 ...props, 49 }); 50 } 51 52 module.exports = getNodeRep;