Individuals.js (2061B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 3 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const { 8 Component, 9 createFactory, 10 } = require("resource://devtools/client/shared/vendor/react.mjs"); 11 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs"); 12 const Tree = createFactory( 13 require("resource://devtools/client/shared/components/VirtualizedTree.js") 14 ); 15 const DominatorTreeItem = createFactory( 16 require("resource://devtools/client/memory/components/DominatorTreeItem.js") 17 ); 18 const { 19 TREE_ROW_HEIGHT, 20 } = require("resource://devtools/client/memory/constants.js"); 21 const models = require("resource://devtools/client/memory/models.js"); 22 23 /** 24 * The list of individuals in a census group. 25 */ 26 class Individuals extends Component { 27 static get propTypes() { 28 return { 29 onViewSourceInDebugger: PropTypes.func.isRequired, 30 onFocus: PropTypes.func.isRequired, 31 individuals: models.individuals, 32 dominatorTree: models.dominatorTreeModel, 33 }; 34 } 35 36 render() { 37 const { individuals, dominatorTree, onViewSourceInDebugger, onFocus } = 38 this.props; 39 40 return Tree({ 41 key: "individuals-tree", 42 autoExpandDepth: 0, 43 preventNavigationOnArrowRight: false, 44 focused: individuals.focused, 45 getParent: () => null, 46 getChildren: () => [], 47 isExpanded: () => false, 48 onExpand: () => {}, 49 onCollapse: () => {}, 50 onFocus, 51 renderItem: (item, depth, focused, _, expanded) => { 52 return DominatorTreeItem({ 53 item, 54 depth, 55 focused, 56 arrow: undefined, 57 expanded, 58 getPercentSize: size => 59 (size / dominatorTree.root.retainedSize) * 100, 60 onViewSourceInDebugger, 61 }); 62 }, 63 getRoots: () => individuals.nodes, 64 getKey: node => node.nodeId, 65 itemHeight: TREE_ROW_HEIGHT, 66 }); 67 } 68 } 69 70 module.exports = Individuals;