electrode-electrify-react-component
Version:
electrode-electrify-react-component
114 lines (98 loc) • 2.96 kB
JavaScript
;
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;