@bundle-stats/ui 4.10.1 → 4.12.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/lib/components/bundle-modules/bundle-modules.constants.js +9 -0
  2. package/lib/components/bundle-modules/bundle-modules.constants.js.map +1 -0
  3. package/lib/components/bundle-modules/bundle-modules.js +13 -3
  4. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  5. package/lib/components/bundle-modules/bundle-modules.module.css +4 -0
  6. package/lib/components/bundle-modules/index.js +27 -4
  7. package/lib/components/bundle-modules/index.js.map +1 -1
  8. package/lib/components/module-info/module-info.js +11 -8
  9. package/lib/components/module-info/module-info.js.map +1 -1
  10. package/lib-esm/components/bundle-modules/bundle-modules.constants.js +6 -0
  11. package/lib-esm/components/bundle-modules/bundle-modules.constants.js.map +1 -0
  12. package/lib-esm/components/bundle-modules/bundle-modules.js +13 -3
  13. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  14. package/lib-esm/components/bundle-modules/bundle-modules.module.css +4 -0
  15. package/lib-esm/components/bundle-modules/index.js +27 -4
  16. package/lib-esm/components/bundle-modules/index.js.map +1 -1
  17. package/lib-esm/components/module-info/module-info.js +12 -9
  18. package/lib-esm/components/module-info/module-info.js.map +1 -1
  19. package/package.json +8 -8
  20. package/src/components/bundle-modules/bundle-modules.constants.ts +4 -0
  21. package/src/components/bundle-modules/bundle-modules.module.css +4 -0
  22. package/src/components/bundle-modules/bundle-modules.tsx +33 -2
  23. package/src/components/bundle-modules/bundle-modules.types.d.ts +1 -1
  24. package/src/components/bundle-modules/index.tsx +41 -4
  25. package/src/components/module-info/module-info.tsx +22 -19
  26. package/types/components/bundle-modules/bundle-modules.constants.d.ts +4 -0
  27. package/types/components/bundle-modules/bundle-modules.d.ts +3 -0
  28. package/types/components/bundle-modules/index.d.ts +2 -1
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleMetric = void 0;
4
+ var ModuleMetric;
5
+ (function (ModuleMetric) {
6
+ ModuleMetric["SIZE"] = "value";
7
+ ModuleMetric["TOTAL_SIZE"] = "totalSize";
8
+ })(ModuleMetric || (exports.ModuleMetric = ModuleMetric = {}));
9
+ //# sourceMappingURL=bundle-modules.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-modules.constants.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/bundle-modules.constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,8BAAc,CAAA;IACd,wCAAwB,CAAA;AAC1B,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB"}
@@ -32,19 +32,23 @@ const classnames_1 = __importDefault(require("classnames"));
32
32
  const utils_1 = require("@bundle-stats/utils");
33
33
  const config_json_1 = __importDefault(require("../../config.json"));
34
34
  const i18n_1 = __importDefault(require("../../i18n"));
35
- const component_link_1 = require("../component-link");
35
+ const box_1 = require("../../layout/box");
36
36
  const flex_stack_1 = require("../../layout/flex-stack");
37
- const input_search_1 = require("../../ui/input-search");
37
+ const button_1 = require("../../ui/button");
38
38
  const empty_set_1 = require("../../ui/empty-set");
39
39
  const file_name_1 = require("../../ui/file-name");
40
40
  const filters_1 = require("../../ui/filters");
41
+ const input_search_1 = require("../../ui/input-search");
41
42
  const tag_1 = require("../../ui/tag");
42
43
  const toolbar_1 = require("../../ui/toolbar");
44
+ const tooltip_1 = require("../../ui/tooltip");
45
+ const component_link_1 = require("../component-link");
43
46
  const metrics_table_1 = require("../metrics-table");
44
47
  const metrics_table_options_1 = require("../metrics-table-options");
45
48
  const metrics_table_title_1 = require("../metrics-table-title");
46
49
  const module_info_1 = require("../module-info");
47
50
  const bundle_modules_utils_1 = require("./bundle-modules.utils");
51
+ const bundle_modules_constants_1 = require("./bundle-modules.constants");
48
52
  const I18N_MODULES = __importStar(require("./bundle-modules.i18n"));
49
53
  const bundle_modules_module_css_1 = __importDefault(require("./bundle-modules.module.css"));
50
54
  const RowHeader = (props) => {
@@ -54,7 +58,7 @@ const RowHeader = (props) => {
54
58
  react_1.default.createElement(file_name_1.FileName, { className: bundle_modules_module_css_1.default.nameText, name: row.label })));
55
59
  };
56
60
  const BundleModules = (props) => {
57
- const { className = '', jobs = [], items = [], allItems = [], chunks = [], totalRowCount = 0, updateFilters, resetFilters, resetAllFilters, filters, sort, updateSort, search, updateSearch, entryId, hideEntryInfo, customComponentLink: CustomComponentLink = component_link_1.ComponentLink, } = props;
61
+ const { className = '', jobs = [], items = [], allItems = [], chunks = [], totalRowCount = 0, updateFilters, resetFilters, resetAllFilters, filters, sort, updateSort, search, updateSearch, entryId, hideEntryInfo, moduleMetric, setModuleMetric, customComponentLink: CustomComponentLink = component_link_1.ComponentLink, } = props;
58
62
  const rootClassName = (0, classnames_1.default)(bundle_modules_module_css_1.default.root, className);
59
63
  const jobLabels = jobs?.map((job) => job?.label);
60
64
  const filterFieldsData = (0, react_1.useMemo)(() => (0, bundle_modules_utils_1.generateFilterFieldsData)({ filters, chunks, compareMode: jobs.length > 1 }), [jobs, filters, chunks]);
@@ -74,6 +78,12 @@ const BundleModules = (props) => {
74
78
  react_1.default.createElement(flex_stack_1.FlexStack, { space: "xxsmall" },
75
79
  react_1.default.createElement(input_search_1.InputSearch, { className: bundle_modules_module_css_1.default.toolbarSearch, placeholder: I18N_MODULES.SEARCH, defaultValue: search, onChange: updateSearch }),
76
80
  react_1.default.createElement(filters_1.Filters, { className: bundle_modules_module_css_1.default.tableDropdown, filters: filterFieldsData, onChange: updateFilters }))),
81
+ react_1.default.createElement(box_1.Box, { padding: ['xsmall', 'small'], className: bundle_modules_module_css_1.default.metricSelector },
82
+ react_1.default.createElement(flex_stack_1.FlexStack, { space: "xxsmall", as: "nav" },
83
+ react_1.default.createElement(button_1.Button, { outline: true, active: moduleMetric === bundle_modules_constants_1.ModuleMetric.SIZE, size: "small", type: "button", onClick: () => setModuleMetric(bundle_modules_constants_1.ModuleMetric.SIZE) },
84
+ react_1.default.createElement(tooltip_1.Tooltip, { title: "Size (excluding duplicate modules)" }, "Module size")),
85
+ react_1.default.createElement(button_1.Button, { outline: true, active: moduleMetric === bundle_modules_constants_1.ModuleMetric.TOTAL_SIZE, size: "small", type: "button", onClick: () => setModuleMetric(bundle_modules_constants_1.ModuleMetric.TOTAL_SIZE) },
86
+ react_1.default.createElement(tooltip_1.Tooltip, { title: "Size (including duplicate modules)" }, "Module total size")))),
77
87
  react_1.default.createElement(metrics_table_1.MetricsTable, { className: bundle_modules_module_css_1.default.table, items: items, runs: jobs, renderRowHeader: renderRowHeader, emptyMessage: emptyMessage, showHeaderSum: true, title: metricsTableTitle, sort: sort, updateSort: updateSort })),
78
88
  entryItem && (react_1.default.createElement(module_info_1.ModuleInfo, { className: bundle_modules_module_css_1.default.moduleInfo, item: entryItem, chunks: chunks, chunkIds: chunks?.map(({ id }) => id), labels: jobLabels, customComponentLink: CustomComponentLink, onClose: hideEntryInfo }))));
79
89
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-modules.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/bundle-modules.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle-modules.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/bundle-modules.tsx"],"names":[],"mappings":"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"}
@@ -12,6 +12,10 @@
12
12
  margin-right: -1px; /** collapse border */
13
13
  }
14
14
 
15
+ .metricSelector {
16
+ border-bottom: 1px solid var(--color-outline);
17
+ }
18
+
15
19
  .nameTagDuplicated {
16
20
  margin-right: var(--space-xxxsmall);
17
21
  vertical-align: baseline;
@@ -31,8 +31,25 @@ const rows_sort_1 = require("../../hooks/rows-sort");
31
31
  const search_params_1 = require("../../hooks/search-params");
32
32
  const bundle_modules_1 = require("./bundle-modules");
33
33
  const bundle_modules_utils_1 = require("./bundle-modules.utils");
34
+ const bundle_modules_constants_1 = require("./bundle-modules.constants");
35
+ function useModuleMetric(params) {
36
+ const { metric, setState } = params;
37
+ const moduleMetric = (0, react_1.useMemo)(() => {
38
+ if (Object.values(bundle_modules_constants_1.ModuleMetric).includes(metric)) {
39
+ return metric;
40
+ }
41
+ return bundle_modules_constants_1.ModuleMetric.SIZE;
42
+ }, [metric]);
43
+ const setModuleMetric = (0, react_1.useCallback)((newModuleMetric) => {
44
+ if (newModuleMetric !== metric) {
45
+ setState({ metric: newModuleMetric });
46
+ }
47
+ }, [metric, setState]);
48
+ return (0, react_1.useMemo)(() => [moduleMetric, setModuleMetric], [moduleMetric, setModuleMetric]);
49
+ }
34
50
  const BundleModules = (props) => {
35
- const { jobs, filters, search, setState, sortBy, direction, ...restProps } = props;
51
+ const { jobs, filters, search, setState, sortBy, direction, metric = '', ...restProps } = props;
52
+ const [moduleMetric, setModuleMetric] = useModuleMetric({ metric, setState });
36
53
  const { chunks, chunkIds } = (0, react_1.useMemo)(() => (0, bundle_modules_utils_1.extractChunkData)(jobs), [jobs]);
37
54
  const { defaultFilters, allEntriesFilters } = (0, react_1.useMemo)(() => (0, bundle_modules_utils_1.generateFilters)(chunkIds, jobs.length > 1), [chunkIds, jobs]);
38
55
  const searchParams = (0, search_params_1.useSearchParams)({
@@ -43,12 +60,18 @@ const BundleModules = (props) => {
43
60
  setState,
44
61
  });
45
62
  const { rows, totalRowCount } = (0, react_1.useMemo)(() => {
46
- const result = webpack.compareBySection.modules(jobs, [bundle_modules_utils_1.addRowFlags]);
63
+ let result;
64
+ if (moduleMetric === bundle_modules_constants_1.ModuleMetric.TOTAL_SIZE) {
65
+ result = webpack.compareModuleDuplicateSize(jobs, [bundle_modules_utils_1.addRowFlags]);
66
+ }
67
+ else if (moduleMetric === bundle_modules_constants_1.ModuleMetric.SIZE) {
68
+ result = webpack.compareBySection.modules(jobs, [bundle_modules_utils_1.addRowFlags]);
69
+ }
47
70
  return {
48
71
  rows: result,
49
72
  totalRowCount: result.length,
50
73
  };
51
- }, [jobs]);
74
+ }, [jobs, moduleMetric]);
52
75
  const filteredRows = (0, rows_filter_1.useRowsFilter)({
53
76
  rows,
54
77
  searchPattern: searchParams.searchPattern,
@@ -64,7 +87,7 @@ const BundleModules = (props) => {
64
87
  const hideEntryInfo = (0, react_1.useCallback)(() => {
65
88
  setState({ entryId: '' });
66
89
  }, [setState]);
67
- return (react_1.default.createElement(bundle_modules_1.BundleModules, { jobs: jobs, chunks: chunks, ...restProps, ...searchParams, ...sortParams, allItems: rows, totalRowCount: totalRowCount, hideEntryInfo: hideEntryInfo }));
90
+ return (react_1.default.createElement(bundle_modules_1.BundleModules, { jobs: jobs, chunks: chunks, ...restProps, ...searchParams, ...sortParams, allItems: rows, totalRowCount: totalRowCount, hideEntryInfo: hideEntryInfo, moduleMetric: moduleMetric, setModuleMetric: setModuleMetric }));
68
91
  };
69
92
  exports.BundleModules = BundleModules;
70
93
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoD;AAEpD,6EAA+D;AAG/D,yDAAwD;AACxD,qDAAoD;AACpD,6DAA4D;AAC5D,qDAAkE;AAClE,iEAMgC;AA8BzB,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEnF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,uCAAgB,EAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3E,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,IAAA,eAAO,EACnD,GAAG,EAAE,CAAC,IAAA,sCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAChD,CAAC,QAAQ,EAAE,IAAI,CAAC,CACjB,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,+BAAe,EAAC;QACnC,MAAM;QACN,OAAO;QACP,cAAc;QACd,iBAAiB;QACjB,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,kCAAW,CAAC,CAAC,CAAC;QACrE,OAAO;YACL,IAAI,EAAE,MAA4C;YAClD,aAAa,EAAE,MAAM,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,YAAY,GAAG,IAAA,2BAAa,EAAC;QACjC,IAAI;QACJ,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,YAAY,EAAE,IAAA,2CAAoB,EAAC,EAAE,QAAQ,EAAE,CAAC;KACjD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAA,uBAAW,EAAC;QAC7B,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,SAAS;QAC3B,aAAa,EAAb,oCAAa;KACd,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACrC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,8BAAC,8BAAa,IACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,KACV,SAAS,KACT,YAAY,KACZ,UAAU,EACd,QAAQ,EAAE,IAAI,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC;AACJ,CAAC,CAAC;AAxDW,QAAA,aAAa,iBAwDxB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoD;AAEpD,6EAA+D;AAG/D,yDAAwD;AACxD,qDAAoD;AACpD,6DAA4D;AAC5D,qDAAkE;AAClE,iEAMgC;AAChC,yEAA0D;AAQ1D,SAAS,eAAe,CAAC,MAAuB;IAC9C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAEpC,MAAM,YAAY,GAAiB,IAAA,eAAO,EAAC,GAAG,EAAE;QAC9C,IAAI,MAAM,CAAC,MAAM,CAAC,uCAAY,CAAC,CAAC,QAAQ,CAAC,MAAsB,CAAC,EAAE;YAChE,OAAO,MAAsB,CAAC;SAC/B;QACD,OAAO,uCAAY,CAAC,IAAI,CAAC;IAC3B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,CAAC,eAA6B,EAAE,EAAE;QAChC,IAAI,eAAe,KAAK,MAAM,EAAE;YAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;SACvC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnB,CAAC;IAEF,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;AACzF,CAAC;AA6BM,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEhG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9E,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,uCAAgB,EAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3E,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,IAAA,eAAO,EACnD,GAAG,EAAE,CAAC,IAAA,sCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAChD,CAAC,QAAQ,EAAE,IAAI,CAAC,CACjB,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,+BAAe,EAAC;QACnC,MAAM;QACN,OAAO;QACP,cAAc;QACd,iBAAiB;QACjB,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC3C,IAAI,MAAM,CAAC;QACX,IAAI,YAAY,KAAK,uCAAY,CAAC,UAAU,EAAE;YAC5C,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC,kCAAW,CAAC,CAAC,CAAC;SAClE;aAAM,IAAI,YAAY,KAAK,uCAAY,CAAC,IAAI,EAAE;YAC7C,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,kCAAW,CAAC,CAAC,CAAC;SAChE;QACD,OAAO;YACL,IAAI,EAAE,MAA4C;YAClD,aAAa,EAAE,MAAM,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEzB,MAAM,YAAY,GAAG,IAAA,2BAAa,EAAC;QACjC,IAAI;QACJ,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,YAAY,EAAE,IAAA,2CAAoB,EAAC,EAAE,QAAQ,EAAE,CAAC;KACjD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAA,uBAAW,EAAC;QAC7B,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,SAAS;QAC3B,aAAa,EAAb,oCAAa;KACd,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACrC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,8BAAC,8BAAa,IACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,KACV,SAAS,KACT,YAAY,KACZ,UAAU,EACd,QAAQ,EAAE,IAAI,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,GAChC,CACH,CAAC;AACJ,CAAC,CAAC;AAjEW,QAAA,aAAa,iBAiExB"}
@@ -40,7 +40,6 @@ const module_info_module_css_1 = __importDefault(require("./module-info.module.c
40
40
  const ModuleInfo = (props) => {
41
41
  const { className = '', item, labels, chunks = [], chunkIds = [], customComponentLink: CustomComponentLink = component_link_1.ComponentLink, onClick = noop_1.default, onClose, } = props;
42
42
  const rootClassName = (0, classnames_1.default)(module_info_module_css_1.default.root, className);
43
- const currentRun = item.runs?.[0];
44
43
  const tags = (0, react_1.useMemo)(() => {
45
44
  if (!item.duplicated) {
46
45
  return null;
@@ -54,13 +53,17 @@ const ModuleInfo = (props) => {
54
53
  : utils_1.MODULE_SOURCE_TYPE_LABELS.FIRST_PARTY;
55
54
  return (react_1.default.createElement(entry_info_1.EntryInfo, { item: item, labels: labels, tags: tags, onClose: onClose, className: rootClassName },
56
55
  react_1.default.createElement(stack_1.Stack, { space: "xxxsmall" },
57
- !(0, isEmpty_1.default)(currentRun?.chunkIds) && (react_1.default.createElement(entry_info_1.EntryInfo.Meta, { label: "Chunks", className: module_info_module_css_1.default.chunks }, currentRun.chunkIds.map((chunkId) => {
58
- const chunk = chunks?.find(({ id }) => id === chunkId);
59
- if (!chunk) {
60
- return null;
61
- }
62
- return (react_1.default.createElement(entry_info_1.EntryInfoMetaLink, { as: CustomComponentLink, ...(0, utils_1.getBundleModulesByChunk)(chunkIds, chunkId), className: module_info_module_css_1.default.chunksItem }, chunk.name));
63
- }))),
56
+ item.runs?.map((currentRun, index) => !(0, isEmpty_1.default)(currentRun?.chunkIds) && (react_1.default.createElement(entry_info_1.EntryInfo.Meta, { label: "Chunks", className: module_info_module_css_1.default.chunks },
57
+ "Job #",
58
+ index + 1,
59
+ ":",
60
+ currentRun.chunkIds.map((chunkId) => {
61
+ const chunk = chunks?.find(({ id }) => id === chunkId);
62
+ if (!chunk) {
63
+ return null;
64
+ }
65
+ return (react_1.default.createElement(entry_info_1.EntryInfoMetaLink, { as: CustomComponentLink, ...(0, utils_1.getBundleModulesByChunk)(chunkIds, chunkId), className: module_info_module_css_1.default.chunksItem }, chunk.name));
66
+ })))),
64
67
  item?.fileType && (react_1.default.createElement(entry_info_1.EntryInfo.Meta, { label: "File type" },
65
68
  react_1.default.createElement(entry_info_1.EntryInfoMetaLink, { as: CustomComponentLink, ...(0, utils_1.getBundleModulesByFileTpe)(item.fileType, fileTypeLabel) }, fileTypeLabel))),
66
69
  react_1.default.createElement(entry_info_1.EntryInfo.Meta, { label: "Source" },
@@ -1 +1 @@
1
- {"version":3,"file":"module-info.js","sourceRoot":"","sources":["../../../src/components/module-info/module-info.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-info.js","sourceRoot":"","sources":["../../../src/components/module-info/module-info.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export var ModuleMetric;
2
+ (function (ModuleMetric) {
3
+ ModuleMetric["SIZE"] = "value";
4
+ ModuleMetric["TOTAL_SIZE"] = "totalSize";
5
+ })(ModuleMetric || (ModuleMetric = {}));
6
+ //# sourceMappingURL=bundle-modules.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-modules.constants.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/bundle-modules.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,8BAAc,CAAA;IACd,wCAAwB,CAAA;AAC1B,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB"}
@@ -3,19 +3,23 @@ import cx from 'classnames';
3
3
  import { SECTIONS, COMPONENT } from '@bundle-stats/utils';
4
4
  import config from '../../config.json';
5
5
  import I18N from '../../i18n';
6
- import { ComponentLink } from '../component-link';
6
+ import { Box } from '../../layout/box';
7
7
  import { FlexStack } from '../../layout/flex-stack';
8
- import { InputSearch } from '../../ui/input-search';
8
+ import { Button } from '../../ui/button';
9
9
  import { EmptySet } from '../../ui/empty-set';
10
10
  import { FileName } from '../../ui/file-name';
11
11
  import { Filters } from '../../ui/filters';
12
+ import { InputSearch } from '../../ui/input-search';
12
13
  import { Tag } from '../../ui/tag';
13
14
  import { Toolbar } from '../../ui/toolbar';
15
+ import { Tooltip } from '../../ui/tooltip';
16
+ import { ComponentLink } from '../component-link';
14
17
  import { MetricsTable } from '../metrics-table';
15
18
  import { MetricsTableOptions } from '../metrics-table-options';
16
19
  import { MetricsTableTitle } from '../metrics-table-title';
17
20
  import { ModuleInfo } from '../module-info';
18
21
  import { generateFilterFieldsData } from './bundle-modules.utils';
22
+ import { ModuleMetric } from './bundle-modules.constants';
19
23
  import * as I18N_MODULES from './bundle-modules.i18n';
20
24
  import css from './bundle-modules.module.css';
21
25
  const RowHeader = (props) => {
@@ -25,7 +29,7 @@ const RowHeader = (props) => {
25
29
  React.createElement(FileName, { className: css.nameText, name: row.label })));
26
30
  };
27
31
  export const BundleModules = (props) => {
28
- const { className = '', jobs = [], items = [], allItems = [], chunks = [], totalRowCount = 0, updateFilters, resetFilters, resetAllFilters, filters, sort, updateSort, search, updateSearch, entryId, hideEntryInfo, customComponentLink: CustomComponentLink = ComponentLink, } = props;
32
+ const { className = '', jobs = [], items = [], allItems = [], chunks = [], totalRowCount = 0, updateFilters, resetFilters, resetAllFilters, filters, sort, updateSort, search, updateSearch, entryId, hideEntryInfo, moduleMetric, setModuleMetric, customComponentLink: CustomComponentLink = ComponentLink, } = props;
29
33
  const rootClassName = cx(css.root, className);
30
34
  const jobLabels = jobs === null || jobs === void 0 ? void 0 : jobs.map((job) => job === null || job === void 0 ? void 0 : job.label);
31
35
  const filterFieldsData = useMemo(() => generateFilterFieldsData({ filters, chunks, compareMode: jobs.length > 1 }), [jobs, filters, chunks]);
@@ -45,6 +49,12 @@ export const BundleModules = (props) => {
45
49
  React.createElement(FlexStack, { space: "xxsmall" },
46
50
  React.createElement(InputSearch, { className: css.toolbarSearch, placeholder: I18N_MODULES.SEARCH, defaultValue: search, onChange: updateSearch }),
47
51
  React.createElement(Filters, { className: css.tableDropdown, filters: filterFieldsData, onChange: updateFilters }))),
52
+ React.createElement(Box, { padding: ['xsmall', 'small'], className: css.metricSelector },
53
+ React.createElement(FlexStack, { space: "xxsmall", as: "nav" },
54
+ React.createElement(Button, { outline: true, active: moduleMetric === ModuleMetric.SIZE, size: "small", type: "button", onClick: () => setModuleMetric(ModuleMetric.SIZE) },
55
+ React.createElement(Tooltip, { title: "Size (excluding duplicate modules)" }, "Module size")),
56
+ React.createElement(Button, { outline: true, active: moduleMetric === ModuleMetric.TOTAL_SIZE, size: "small", type: "button", onClick: () => setModuleMetric(ModuleMetric.TOTAL_SIZE) },
57
+ React.createElement(Tooltip, { title: "Size (including duplicate modules)" }, "Module total size")))),
48
58
  React.createElement(MetricsTable, { className: css.table, items: items, runs: jobs, renderRowHeader: renderRowHeader, emptyMessage: emptyMessage, showHeaderSum: true, title: metricsTableTitle, sort: sort, updateSort: updateSort })),
49
59
  entryItem && (React.createElement(ModuleInfo, { className: css.moduleInfo, item: entryItem, chunks: chunks, chunkIds: chunks === null || chunks === void 0 ? void 0 : chunks.map(({ id }) => id), labels: jobLabels, customComponentLink: CustomComponentLink, onClose: hideEntryInfo }))));
50
60
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-modules.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/bundle-modules.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle-modules.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/bundle-modules.tsx"],"names":[],"mappings":"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"}
@@ -12,6 +12,10 @@
12
12
  margin-right: -1px; /** collapse border */
13
13
  }
14
14
 
15
+ .metricSelector {
16
+ border-bottom: 1px solid var(--color-outline);
17
+ }
18
+
15
19
  .nameTagDuplicated {
16
20
  margin-right: var(--space-xxxsmall);
17
21
  vertical-align: baseline;
@@ -5,8 +5,25 @@ import { useRowsSort } from '../../hooks/rows-sort';
5
5
  import { useSearchParams } from '../../hooks/search-params';
6
6
  import { BundleModules as BaseComponent } from './bundle-modules';
7
7
  import { addRowFlags, extractChunkData, generateGetRowFilter, generateFilters, getCustomSort, } from './bundle-modules.utils';
8
+ import { ModuleMetric } from './bundle-modules.constants';
9
+ function useModuleMetric(params) {
10
+ const { metric, setState } = params;
11
+ const moduleMetric = useMemo(() => {
12
+ if (Object.values(ModuleMetric).includes(metric)) {
13
+ return metric;
14
+ }
15
+ return ModuleMetric.SIZE;
16
+ }, [metric]);
17
+ const setModuleMetric = useCallback((newModuleMetric) => {
18
+ if (newModuleMetric !== metric) {
19
+ setState({ metric: newModuleMetric });
20
+ }
21
+ }, [metric, setState]);
22
+ return useMemo(() => [moduleMetric, setModuleMetric], [moduleMetric, setModuleMetric]);
23
+ }
8
24
  export const BundleModules = (props) => {
9
- const { jobs, filters, search, setState, sortBy, direction, ...restProps } = props;
25
+ const { jobs, filters, search, setState, sortBy, direction, metric = '', ...restProps } = props;
26
+ const [moduleMetric, setModuleMetric] = useModuleMetric({ metric, setState });
10
27
  const { chunks, chunkIds } = useMemo(() => extractChunkData(jobs), [jobs]);
11
28
  const { defaultFilters, allEntriesFilters } = useMemo(() => generateFilters(chunkIds, jobs.length > 1), [chunkIds, jobs]);
12
29
  const searchParams = useSearchParams({
@@ -17,12 +34,18 @@ export const BundleModules = (props) => {
17
34
  setState,
18
35
  });
19
36
  const { rows, totalRowCount } = useMemo(() => {
20
- const result = webpack.compareBySection.modules(jobs, [addRowFlags]);
37
+ let result;
38
+ if (moduleMetric === ModuleMetric.TOTAL_SIZE) {
39
+ result = webpack.compareModuleDuplicateSize(jobs, [addRowFlags]);
40
+ }
41
+ else if (moduleMetric === ModuleMetric.SIZE) {
42
+ result = webpack.compareBySection.modules(jobs, [addRowFlags]);
43
+ }
21
44
  return {
22
45
  rows: result,
23
46
  totalRowCount: result.length,
24
47
  };
25
- }, [jobs]);
48
+ }, [jobs, moduleMetric]);
26
49
  const filteredRows = useRowsFilter({
27
50
  rows,
28
51
  searchPattern: searchParams.searchPattern,
@@ -38,6 +61,6 @@ export const BundleModules = (props) => {
38
61
  const hideEntryInfo = useCallback(() => {
39
62
  setState({ entryId: '' });
40
63
  }, [setState]);
41
- return (React.createElement(BaseComponent, { jobs: jobs, chunks: chunks, ...restProps, ...searchParams, ...sortParams, allItems: rows, totalRowCount: totalRowCount, hideEntryInfo: hideEntryInfo }));
64
+ return (React.createElement(BaseComponent, { jobs: jobs, chunks: chunks, ...restProps, ...searchParams, ...sortParams, allItems: rows, totalRowCount: totalRowCount, hideEntryInfo: hideEntryInfo, moduleMetric: moduleMetric, setModuleMetric: setModuleMetric }));
42
65
  };
43
66
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,GACd,MAAM,wBAAwB,CAAC;AA8BhC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEnF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3E,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,OAAO,CACnD,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAChD,CAAC,QAAQ,EAAE,IAAI,CAAC,CACjB,CAAC;IAEF,MAAM,YAAY,GAAG,eAAe,CAAC;QACnC,MAAM;QACN,OAAO;QACP,cAAc;QACd,iBAAiB;QACjB,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACrE,OAAO;YACL,IAAI,EAAE,MAA4C;YAClD,aAAa,EAAE,MAAM,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,YAAY,GAAG,aAAa,CAAC;QACjC,IAAI;QACJ,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,YAAY,EAAE,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC;KACjD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,WAAW,CAAC;QAC7B,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,SAAS;QAC3B,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,oBAAC,aAAa,IACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,KACV,SAAS,KACT,YAAY,KACZ,UAAU,EACd,QAAQ,EAAE,IAAI,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/bundle-modules/index.tsx"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ export const ModuleInfo = (props) => {
12
12
  var _a;
13
13
  const { className = '', item, labels, chunks = [], chunkIds = [], customComponentLink: CustomComponentLink = ComponentLink, onClick = noop, onClose, } = props;
14
14
  const rootClassName = cx(css.root, className);
15
- const currentRun = (_a = item.runs) === null || _a === void 0 ? void 0 : _a[0];
16
15
  const tags = useMemo(() => {
17
16
  if (!item.duplicated) {
18
17
  return null;
@@ -25,14 +24,18 @@ export const ModuleInfo = (props) => {
25
24
  ? MODULE_SOURCE_TYPE_LABELS.THIRD_PARTY
26
25
  : MODULE_SOURCE_TYPE_LABELS.FIRST_PARTY;
27
26
  return (React.createElement(EntryInfo, { item: item, labels: labels, tags: tags, onClose: onClose, className: rootClassName },
28
- React.createElement(Stack, { space: "xxxsmall" },
29
- !isEmpty(currentRun === null || currentRun === void 0 ? void 0 : currentRun.chunkIds) && (React.createElement(EntryInfo.Meta, { label: "Chunks", className: css.chunks }, currentRun.chunkIds.map((chunkId) => {
30
- const chunk = chunks === null || chunks === void 0 ? void 0 : chunks.find(({ id }) => id === chunkId);
31
- if (!chunk) {
32
- return null;
33
- }
34
- return (React.createElement(EntryInfoMetaLink, { as: CustomComponentLink, ...getBundleModulesByChunk(chunkIds, chunkId), className: css.chunksItem }, chunk.name));
35
- }))),
27
+ React.createElement(Stack, { space: "xxxsmall" }, (_a = item.runs) === null || _a === void 0 ? void 0 :
28
+ _a.map((currentRun, index) => !isEmpty(currentRun === null || currentRun === void 0 ? void 0 : currentRun.chunkIds) && (React.createElement(EntryInfo.Meta, { label: "Chunks", className: css.chunks },
29
+ "Job #",
30
+ index + 1,
31
+ ":",
32
+ currentRun.chunkIds.map((chunkId) => {
33
+ const chunk = chunks === null || chunks === void 0 ? void 0 : chunks.find(({ id }) => id === chunkId);
34
+ if (!chunk) {
35
+ return null;
36
+ }
37
+ return (React.createElement(EntryInfoMetaLink, { as: CustomComponentLink, ...getBundleModulesByChunk(chunkIds, chunkId), className: css.chunksItem }, chunk.name));
38
+ })))),
36
39
  (item === null || item === void 0 ? void 0 : item.fileType) && (React.createElement(EntryInfo.Meta, { label: "File type" },
37
40
  React.createElement(EntryInfoMetaLink, { as: CustomComponentLink, ...getBundleModulesByFileTpe(item.fileType, fileTypeLabel) }, fileTypeLabel))),
38
41
  React.createElement(EntryInfo.Meta, { label: "Source" },
@@ -1 +1 @@
1
- {"version":3,"file":"module-info.js","sourceRoot":"","sources":["../../../src/components/module-info/module-info.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-info.js","sourceRoot":"","sources":["../../../src/components/module-info/module-info.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/ui",
3
- "version": "4.10.1",
3
+ "version": "4.12.0-beta.1",
4
4
  "description": "UI components for BundleStats projects.",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -39,10 +39,10 @@
39
39
  "@babel/preset-env": "7.23.9",
40
40
  "@babel/preset-react": "7.23.3",
41
41
  "@babel/preset-typescript": "7.23.3",
42
- "@storybook/addon-essentials": "7.6.16",
43
- "@storybook/react": "7.6.16",
44
- "@storybook/react-webpack5": "7.6.16",
45
- "@types/react": "18.2.56",
42
+ "@storybook/addon-essentials": "7.6.17",
43
+ "@storybook/react": "7.6.17",
44
+ "@storybook/react-webpack5": "7.6.17",
45
+ "@types/react": "18.2.57",
46
46
  "@types/react-router-dom": "5.3.3",
47
47
  "babel-plugin-require-context-hook": "1.0.0",
48
48
  "classnames": "2.5.1",
@@ -59,7 +59,7 @@
59
59
  "react-dom": "18.2.0",
60
60
  "react-router-dom": "5.3.4",
61
61
  "rimraf": "5.0.5",
62
- "storybook": "7.6.16",
62
+ "storybook": "7.6.17",
63
63
  "typescript": "5.1.6",
64
64
  "typescript-plugin-css-modules": "5.1.0"
65
65
  },
@@ -72,10 +72,10 @@
72
72
  "react-router-dom": "^5.0.0"
73
73
  },
74
74
  "dependencies": {
75
- "@bundle-stats/utils": "^4.10.1",
75
+ "@bundle-stats/utils": "4.12.0-beta.1",
76
76
  "ariakit": "2.0.0-next.44",
77
77
  "modern-css-reset": "1.4.0",
78
78
  "use-query-params": "2.2.1"
79
79
  },
80
- "gitHead": "e874e0432f5c1c4434b5b30db20aa802505b251c"
80
+ "gitHead": "84b4e914f0840ca7c50761506562a3eeeb2919ef"
81
81
  }
@@ -0,0 +1,4 @@
1
+ export enum ModuleMetric {
2
+ SIZE = 'value',
3
+ TOTAL_SIZE = 'totalSize',
4
+ }
@@ -12,6 +12,10 @@
12
12
  margin-right: -1px; /** collapse border */
13
13
  }
14
14
 
15
+ .metricSelector {
16
+ border-bottom: 1px solid var(--color-outline);
17
+ }
18
+
15
19
  .nameTagDuplicated {
16
20
  margin-right: var(--space-xxxsmall);
17
21
  vertical-align: baseline;
@@ -5,19 +5,23 @@ import { SECTIONS, COMPONENT } from '@bundle-stats/utils';
5
5
  import type { SortAction } from '../../types';
6
6
  import config from '../../config.json';
7
7
  import I18N from '../../i18n';
8
- import { ComponentLink } from '../component-link';
8
+ import { Box } from '../../layout/box';
9
9
  import { FlexStack } from '../../layout/flex-stack';
10
- import { InputSearch } from '../../ui/input-search';
10
+ import { Button } from '../../ui/button';
11
11
  import { EmptySet } from '../../ui/empty-set';
12
12
  import { FileName } from '../../ui/file-name';
13
13
  import { Filters } from '../../ui/filters';
14
+ import { InputSearch } from '../../ui/input-search';
14
15
  import { Tag } from '../../ui/tag';
15
16
  import { Toolbar } from '../../ui/toolbar';
17
+ import { Tooltip } from '../../ui/tooltip';
18
+ import { ComponentLink } from '../component-link';
16
19
  import { MetricsTable } from '../metrics-table';
17
20
  import { MetricsTableOptions } from '../metrics-table-options';
18
21
  import { MetricsTableTitle } from '../metrics-table-title';
19
22
  import { ModuleInfo } from '../module-info';
20
23
  import { generateFilterFieldsData } from './bundle-modules.utils';
24
+ import { ModuleMetric } from './bundle-modules.constants';
21
25
  import type { Chunk, Job, ReportMetricModuleRow } from './bundle-modules.types';
22
26
  import * as I18N_MODULES from './bundle-modules.i18n';
23
27
  import css from './bundle-modules.module.css';
@@ -68,6 +72,9 @@ interface BundleModulesProps extends React.ComponentProps<'div'> {
68
72
  entryId?: string;
69
73
  hideEntryInfo: () => void;
70
74
 
75
+ moduleMetric: ModuleMetric;
76
+ setModuleMetric: (newValue: ModuleMetric) => void;
77
+
71
78
  customComponentLink: React.ElementType;
72
79
  }
73
80
 
@@ -89,6 +96,8 @@ export const BundleModules = (props: BundleModulesProps) => {
89
96
  updateSearch,
90
97
  entryId,
91
98
  hideEntryInfo,
99
+ moduleMetric,
100
+ setModuleMetric,
92
101
  customComponentLink: CustomComponentLink = ComponentLink,
93
102
  } = props;
94
103
 
@@ -172,6 +181,28 @@ export const BundleModules = (props: BundleModulesProps) => {
172
181
  />
173
182
  </FlexStack>
174
183
  </Toolbar>
184
+ <Box padding={['xsmall', 'small']} className={css.metricSelector}>
185
+ <FlexStack space="xxsmall" as="nav">
186
+ <Button
187
+ outline
188
+ active={moduleMetric === ModuleMetric.SIZE}
189
+ size="small"
190
+ type="button"
191
+ onClick={() => setModuleMetric(ModuleMetric.SIZE)}
192
+ >
193
+ <Tooltip title="Size (excluding duplicate modules)">Module size</Tooltip>
194
+ </Button>
195
+ <Button
196
+ outline
197
+ active={moduleMetric === ModuleMetric.TOTAL_SIZE}
198
+ size="small"
199
+ type="button"
200
+ onClick={() => setModuleMetric(ModuleMetric.TOTAL_SIZE)}
201
+ >
202
+ <Tooltip title="Size (including duplicate modules)">Module total size</Tooltip>
203
+ </Button>
204
+ </FlexStack>
205
+ </Box>
175
206
  <MetricsTable
176
207
  className={css.table}
177
208
  items={items}
@@ -13,7 +13,7 @@ export type ReportMetricModuleRow = {
13
13
  } & ReportMetricRun &
14
14
  Module;
15
15
 
16
- interface Job {
16
+ export interface Job {
17
17
  label: string;
18
18
  internalBuildNumber: number;
19
19
  meta?: {
@@ -14,8 +14,36 @@ import {
14
14
  generateFilters,
15
15
  getCustomSort,
16
16
  } from './bundle-modules.utils';
17
+ import { ModuleMetric } from './bundle-modules.constants';
17
18
  import * as types from './bundle-modules.types';
18
19
 
20
+ interface UseMetricParams {
21
+ metric?: string;
22
+ setState: ({ metric }: { metric: ModuleMetric }) => void;
23
+ }
24
+
25
+ function useModuleMetric(params: UseMetricParams): [ModuleMetric, (value: ModuleMetric) => void] {
26
+ const { metric, setState } = params;
27
+
28
+ const moduleMetric: ModuleMetric = useMemo(() => {
29
+ if (Object.values(ModuleMetric).includes(metric as ModuleMetric)) {
30
+ return metric as ModuleMetric;
31
+ }
32
+ return ModuleMetric.SIZE;
33
+ }, [metric]);
34
+
35
+ const setModuleMetric = useCallback(
36
+ (newModuleMetric: ModuleMetric) => {
37
+ if (newModuleMetric !== metric) {
38
+ setState({ metric: newModuleMetric });
39
+ }
40
+ },
41
+ [metric, setState],
42
+ );
43
+
44
+ return useMemo(() => [moduleMetric, setModuleMetric], [moduleMetric, setModuleMetric]);
45
+ }
46
+
19
47
  interface BundleModulesProps
20
48
  extends Omit<
21
49
  React.ComponentProps<typeof BaseComponent>,
@@ -30,7 +58,6 @@ interface BundleModulesProps
30
58
  | 'updateSort'
31
59
  | 'search'
32
60
  | 'updateSearch'
33
- | 'entryId'
34
61
  | 'allItems'
35
62
  | 'totalRowCount'
36
63
  | 'hideEntryInfo'
@@ -38,13 +65,16 @@ interface BundleModulesProps
38
65
  jobs: Array<types.Job>;
39
66
  filters: Record<string, boolean>;
40
67
  search?: string;
68
+ metric?: string;
41
69
  setState: (params: any) => void;
42
70
  sortBy?: string;
43
71
  direction?: SortAction['direction'];
44
72
  }
45
73
 
46
74
  export const BundleModules = (props: BundleModulesProps) => {
47
- const { jobs, filters, search, setState, sortBy, direction, ...restProps } = props;
75
+ const { jobs, filters, search, setState, sortBy, direction, metric = '', ...restProps } = props;
76
+
77
+ const [moduleMetric, setModuleMetric] = useModuleMetric({ metric, setState });
48
78
 
49
79
  const { chunks, chunkIds } = useMemo(() => extractChunkData(jobs), [jobs]);
50
80
 
@@ -62,12 +92,17 @@ export const BundleModules = (props: BundleModulesProps) => {
62
92
  });
63
93
 
64
94
  const { rows, totalRowCount } = useMemo(() => {
65
- const result = webpack.compareBySection.modules(jobs, [addRowFlags]);
95
+ let result;
96
+ if (moduleMetric === ModuleMetric.TOTAL_SIZE) {
97
+ result = webpack.compareModuleDuplicateSize(jobs, [addRowFlags]);
98
+ } else if (moduleMetric === ModuleMetric.SIZE) {
99
+ result = webpack.compareBySection.modules(jobs, [addRowFlags]);
100
+ }
66
101
  return {
67
102
  rows: result as Array<types.ReportMetricModuleRow>,
68
103
  totalRowCount: result.length,
69
104
  };
70
- }, [jobs]);
105
+ }, [jobs, moduleMetric]);
71
106
 
72
107
  const filteredRows = useRowsFilter({
73
108
  rows,
@@ -97,6 +132,8 @@ export const BundleModules = (props: BundleModulesProps) => {
97
132
  allItems={rows}
98
133
  totalRowCount={totalRowCount}
99
134
  hideEntryInfo={hideEntryInfo}
135
+ moduleMetric={moduleMetric}
136
+ setModuleMetric={setModuleMetric}
100
137
  />
101
138
  );
102
139
  };
@@ -48,7 +48,6 @@ export const ModuleInfo = (props: ModuleInfoProps & React.ComponentProps<'div'>)
48
48
  } = props;
49
49
 
50
50
  const rootClassName = cx(css.root, className);
51
- const currentRun = item.runs?.[0];
52
51
 
53
52
  const tags = useMemo(() => {
54
53
  if (!item.duplicated) {
@@ -73,26 +72,30 @@ export const ModuleInfo = (props: ModuleInfoProps & React.ComponentProps<'div'>)
73
72
  return (
74
73
  <EntryInfo item={item} labels={labels} tags={tags} onClose={onClose} className={rootClassName}>
75
74
  <Stack space="xxxsmall">
76
- {!isEmpty(currentRun?.chunkIds) && (
77
- <EntryInfo.Meta label="Chunks" className={css.chunks}>
78
- {currentRun.chunkIds.map((chunkId) => {
79
- const chunk = chunks?.find(({ id }) => id === chunkId);
75
+ {item.runs?.map(
76
+ (currentRun, index) =>
77
+ !isEmpty(currentRun?.chunkIds) && (
78
+ <EntryInfo.Meta label="Chunks" className={css.chunks}>
79
+ Job #{index + 1}:
80
+ {currentRun.chunkIds.map((chunkId) => {
81
+ const chunk = chunks?.find(({ id }) => id === chunkId);
80
82
 
81
- if (!chunk) {
82
- return null;
83
- }
83
+ if (!chunk) {
84
+ return null;
85
+ }
84
86
 
85
- return (
86
- <EntryInfoMetaLink
87
- as={CustomComponentLink}
88
- {...getBundleModulesByChunk(chunkIds, chunkId)}
89
- className={css.chunksItem}
90
- >
91
- {chunk.name}
92
- </EntryInfoMetaLink>
93
- );
94
- })}
95
- </EntryInfo.Meta>
87
+ return (
88
+ <EntryInfoMetaLink
89
+ as={CustomComponentLink}
90
+ {...getBundleModulesByChunk(chunkIds, chunkId)}
91
+ className={css.chunksItem}
92
+ >
93
+ {chunk.name}
94
+ </EntryInfoMetaLink>
95
+ );
96
+ })}
97
+ </EntryInfo.Meta>
98
+ ),
96
99
  )}
97
100
 
98
101
  {item?.fileType && (
@@ -0,0 +1,4 @@
1
+ export declare enum ModuleMetric {
2
+ SIZE = "value",
3
+ TOTAL_SIZE = "totalSize"
4
+ }
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { SortAction } from '../../types';
3
+ import { ModuleMetric } from './bundle-modules.constants';
3
4
  import type { Chunk, Job, ReportMetricModuleRow } from './bundle-modules.types';
4
5
  interface BundleModulesProps extends React.ComponentProps<'div'> {
5
6
  jobs?: Array<Job>;
@@ -17,6 +18,8 @@ interface BundleModulesProps extends React.ComponentProps<'div'> {
17
18
  updateSearch: (newSerarch: string) => void;
18
19
  entryId?: string;
19
20
  hideEntryInfo: () => void;
21
+ moduleMetric: ModuleMetric;
22
+ setModuleMetric: (newValue: ModuleMetric) => void;
20
23
  customComponentLink: React.ElementType;
21
24
  }
22
25
  export declare const BundleModules: (props: BundleModulesProps) => React.JSX.Element;
@@ -2,10 +2,11 @@ import React from 'react';
2
2
  import type { SortAction } from '../../types';
3
3
  import { BundleModules as BaseComponent } from './bundle-modules';
4
4
  import * as types from './bundle-modules.types';
5
- interface BundleModulesProps extends Omit<React.ComponentProps<typeof BaseComponent>, 'jobs' | 'items' | 'chunks' | 'updateFilters' | 'resetFilters' | 'resetAllFilters' | 'filters' | 'sort' | 'updateSort' | 'search' | 'updateSearch' | 'entryId' | 'allItems' | 'totalRowCount' | 'hideEntryInfo'> {
5
+ interface BundleModulesProps extends Omit<React.ComponentProps<typeof BaseComponent>, 'jobs' | 'items' | 'chunks' | 'updateFilters' | 'resetFilters' | 'resetAllFilters' | 'filters' | 'sort' | 'updateSort' | 'search' | 'updateSearch' | 'allItems' | 'totalRowCount' | 'hideEntryInfo'> {
6
6
  jobs: Array<types.Job>;
7
7
  filters: Record<string, boolean>;
8
8
  search?: string;
9
+ metric?: string;
9
10
  setState: (params: any) => void;
10
11
  sortBy?: string;
11
12
  direction?: SortAction['direction'];