UNPKG

electrode-electrify-react-component

Version:
114 lines (98 loc) 2.96 kB
"use strict"; exports.__esModule = true; var _keys = require("babel-runtime/core-js/object/keys"); var _keys2 = _interopRequireDefault(_keys); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _List = require("material-ui/List"); var _prettysize = require("prettysize"); var _prettysize2 = _interopRequireDefault(_prettysize); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* eslint-disable max-statements, react/jsx-indent-props, no-magic-numbers */ var listPkg = function listPkg(totalSize, pkg, key) { var nestModules = function nestModules(modules) { return (0, _keys2.default)(modules).map(function (name, i) { var m = modules[name]; var pt = name + " [" + (0, _prettysize2.default)(m.size) + "]"; return _react2.default.createElement(_List.ListItem, { key: i, primaryText: pt }); }); }; var parentsStr = function parentsStr(parents) { return parents.substr(1).split(":").join("/"); }; var byParents = (0, _keys2.default)(pkg).filter(function (k) { return k.startsWith("$"); }); var $ = pkg[byParents[0]]; var dups = ""; var nestedItems = void 0; var size = 0; if (byParents.length > 1) { dups = _react2.default.createElement( "span", null, " [", byParents.length, " dups] " ); size = byParents.reduce(function (acc, k) { return acc + pkg[k].size; }, 0); nestedItems = byParents.sort().map(function (p, i) { var pt = p === "$" ? "at top level" : "under " + parentsStr(p); return _react2.default.createElement(_List.ListItem, { key: i, primaryText: pt, primaryTogglesNestedList: true, nestedItems: nestModules(pkg[p].modules) }); }); } else { nestedItems = nestModules($.modules); size = $.size; } var pct = size / totalSize * 100; var name = $.name === "." ? "under app CWD" : $.name; var primaryText = _react2.default.createElement( "div", null, _react2.default.createElement( "span", null, name ), dups, _react2.default.createElement( "span", null, " [", (0, _prettysize2.default)(size), "]" ), _react2.default.createElement( "span", null, " [", pct.toFixed(2), "%]" ) ); return _react2.default.createElement(_List.ListItem, { key: key, primaryText: primaryText, primaryTogglesNestedList: true, nestedItems: nestedItems }); }; var ModulesByPkg = function ModulesByPkg(props) { return _react2.default.createElement( _List.List, null, (0, _keys2.default)(props.modulesByPkg).sort().map(function (name, key) { return listPkg(props.totalSize, props.modulesByPkg[name], key); }) ); }; ModulesByPkg.propTypes = { totalSize: _react.PropTypes.number, modulesByPkg: _react.PropTypes.object }; exports.default = ModulesByPkg;