@bundle-stats/ui 3.3.0-alpha.1 → 3.3.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 (240) hide show
  1. package/CHANGELOG.md +65 -13
  2. package/lib/app/app.js +124 -104
  3. package/lib/app/app.module.css +11 -4
  4. package/lib/app/app.stories.js +1 -22
  5. package/lib/app/header/header.js +1 -10
  6. package/lib/assets/icons.svg +0 -8
  7. package/lib/components/asset-info/asset-info.module.css +1 -0
  8. package/lib/components/bundle-assets/bundle-assets.js +104 -52
  9. package/lib/components/bundle-assets/bundle-assets.module.css +24 -26
  10. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +16 -42
  11. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  12. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +1 -20
  13. package/lib/components/bundle-modules/bundle-modules.js +68 -68
  14. package/lib/components/bundle-modules/bundle-modules.module.css +11 -2
  15. package/lib/components/bundle-modules/bundle-modules.utils.js +14 -10
  16. package/lib/components/bundle-modules/index.js +4 -4
  17. package/lib/components/bundle-packages/bundle-packages.js +100 -44
  18. package/lib/components/bundle-packages/bundle-packages.module.css +17 -21
  19. package/lib/components/delta/delta.module.css +1 -0
  20. package/lib/components/index.js +0 -8
  21. package/lib/components/job-header/job-header.js +3 -1
  22. package/lib/components/job-header/job-header.module.css +6 -8
  23. package/lib/components/jobs-header/jobs-header.module.css +5 -0
  24. package/lib/components/metrics-table/metrics-table.js +72 -59
  25. package/lib/components/metrics-table/metrics-table.module.css +18 -7
  26. package/lib/components/metrics-table-search/metrics-table-search.module.css +5 -4
  27. package/lib/components/metrics-table-title/metrics-table-title.js +9 -7
  28. package/lib/components/metrics-table-title/metrics-table-title.module.css +2 -0
  29. package/lib/components/module-info/module-info.js +2 -2
  30. package/lib/components/module-info/module-info.module.css +1 -0
  31. package/lib/components/summary/summary.js +7 -12
  32. package/lib/components/summary/summary.module.css +1 -1
  33. package/lib/components/summary/summary.stories.js +0 -29
  34. package/lib/components/summary-item/summary-item.js +18 -38
  35. package/lib/components/summary-item/summary-item.module.css +1 -34
  36. package/lib/components/summary-item/summary-item.stories.js +53 -51
  37. package/lib/components/total-size-type-title/total-size-type-title.js +7 -3
  38. package/lib/constants.js +4 -4
  39. package/lib/css/default.css +14 -3
  40. package/lib/css/variables.css +17 -17
  41. package/lib/hooks/search-params.js +31 -31
  42. package/lib/layout/box/box.module.css +9 -0
  43. package/lib/layout/footer/footer.module.css +1 -1
  44. package/lib/layout/index.js +8 -0
  45. package/lib/layout/separator.js +48 -0
  46. package/lib/layout/separator.module.css +5 -0
  47. package/lib/ui/alert/alert.js +3 -13
  48. package/lib/ui/dropdown/dropdown.js +21 -26
  49. package/lib/ui/dropdown/dropdown.module.css +11 -12
  50. package/lib/ui/dropdown/dropdown.stories.js +2 -9
  51. package/lib/ui/empty-set/empty-set.js +5 -4
  52. package/lib/ui/empty-set/empty-set.module.css +2 -2
  53. package/lib/ui/filters/filters.container.js +1 -1
  54. package/lib/ui/filters/filters.js +22 -7
  55. package/lib/ui/filters/filters.module.css +3 -3
  56. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js +1 -1
  57. package/lib/ui/hover-card/hover-card.js +102 -0
  58. package/lib/ui/hover-card/hover-card.module.css +29 -0
  59. package/lib/ui/hover-card/hover-card.stories.js +56 -0
  60. package/lib/{components/budget-info → ui/hover-card}/index.js +4 -4
  61. package/lib/ui/icon/icon.js +6 -8
  62. package/lib/ui/icon/icon.module.css +1 -0
  63. package/lib/ui/index.js +8 -8
  64. package/lib/ui/table/table.js +5 -74
  65. package/lib/ui/table/table.module.css +41 -25
  66. package/lib/ui/table/table.stories.js +1 -1
  67. package/lib/ui/{popover → tag}/index.js +4 -4
  68. package/lib/ui/tag/tag.js +72 -0
  69. package/lib/ui/tag/tag.module.css +55 -0
  70. package/lib/ui/tag/tag.stories.js +38 -0
  71. package/lib/ui/tooltip/tooltip.js +10 -9
  72. package/lib/ui/tooltip/tooltip.module.css +2 -1
  73. package/lib-esm/app/app.js +119 -103
  74. package/lib-esm/app/app.module.css +11 -4
  75. package/lib-esm/app/app.stories.js +1 -22
  76. package/lib-esm/app/header/header.js +1 -9
  77. package/lib-esm/assets/icons.svg +0 -8
  78. package/lib-esm/components/asset-info/asset-info.module.css +1 -0
  79. package/lib-esm/components/bundle-assets/bundle-assets.js +97 -56
  80. package/lib-esm/components/bundle-assets/bundle-assets.module.css +24 -26
  81. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +13 -26
  82. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  83. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +0 -18
  84. package/lib-esm/components/bundle-modules/bundle-modules.js +50 -51
  85. package/lib-esm/components/bundle-modules/bundle-modules.module.css +11 -2
  86. package/lib-esm/components/bundle-modules/bundle-modules.utils.js +14 -6
  87. package/lib-esm/components/bundle-modules/index.js +5 -3
  88. package/lib-esm/components/bundle-packages/bundle-packages.js +88 -41
  89. package/lib-esm/components/bundle-packages/bundle-packages.module.css +17 -21
  90. package/lib-esm/components/delta/delta.module.css +1 -0
  91. package/lib-esm/components/index.js +0 -1
  92. package/lib-esm/components/job-header/job-header.js +2 -1
  93. package/lib-esm/components/job-header/job-header.module.css +6 -8
  94. package/lib-esm/components/jobs-header/jobs-header.module.css +5 -0
  95. package/lib-esm/components/metrics-table/metrics-table.js +61 -53
  96. package/lib-esm/components/metrics-table/metrics-table.module.css +18 -7
  97. package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +5 -4
  98. package/lib-esm/components/metrics-table-title/metrics-table-title.js +8 -7
  99. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +2 -0
  100. package/lib-esm/components/module-info/module-info.js +2 -2
  101. package/lib-esm/components/module-info/module-info.module.css +1 -0
  102. package/lib-esm/components/summary/summary.js +7 -11
  103. package/lib-esm/components/summary/summary.module.css +1 -1
  104. package/lib-esm/components/summary/summary.stories.js +0 -27
  105. package/lib-esm/components/summary-item/summary-item.js +16 -36
  106. package/lib-esm/components/summary-item/summary-item.module.css +1 -34
  107. package/lib-esm/components/summary-item/summary-item.stories.js +38 -50
  108. package/lib-esm/components/total-size-type-title/total-size-type-title.js +6 -3
  109. package/lib-esm/constants.js +4 -4
  110. package/lib-esm/css/default.css +14 -3
  111. package/lib-esm/css/variables.css +17 -17
  112. package/lib-esm/hooks/search-params.js +27 -28
  113. package/lib-esm/layout/box/box.module.css +9 -0
  114. package/lib-esm/layout/footer/footer.module.css +1 -1
  115. package/lib-esm/layout/index.js +1 -0
  116. package/lib-esm/layout/separator.js +28 -0
  117. package/lib-esm/layout/separator.module.css +5 -0
  118. package/lib-esm/ui/alert/alert.js +3 -6
  119. package/lib-esm/ui/dropdown/dropdown.js +20 -25
  120. package/lib-esm/ui/dropdown/dropdown.module.css +11 -12
  121. package/lib-esm/ui/dropdown/dropdown.stories.js +2 -7
  122. package/lib-esm/ui/empty-set/empty-set.js +4 -4
  123. package/lib-esm/ui/empty-set/empty-set.module.css +2 -2
  124. package/lib-esm/ui/filters/filters.js +20 -5
  125. package/lib-esm/ui/filters/filters.module.css +3 -3
  126. package/lib-esm/ui/hover-card/hover-card.js +83 -0
  127. package/lib-esm/ui/hover-card/hover-card.module.css +29 -0
  128. package/lib-esm/ui/hover-card/hover-card.stories.js +35 -0
  129. package/lib-esm/ui/hover-card/index.js +1 -0
  130. package/lib-esm/ui/icon/icon.js +3 -5
  131. package/lib-esm/ui/icon/icon.module.css +1 -0
  132. package/lib-esm/ui/index.js +1 -1
  133. package/lib-esm/ui/table/table.js +5 -65
  134. package/lib-esm/ui/table/table.module.css +41 -25
  135. package/lib-esm/ui/table/table.stories.js +1 -1
  136. package/lib-esm/ui/tag/index.js +1 -0
  137. package/lib-esm/ui/tag/tag.js +45 -0
  138. package/lib-esm/ui/tag/tag.module.css +55 -0
  139. package/lib-esm/ui/tag/tag.stories.js +23 -0
  140. package/lib-esm/ui/tooltip/tooltip.js +10 -9
  141. package/lib-esm/ui/tooltip/tooltip.module.css +2 -1
  142. package/package.json +33 -31
  143. package/src/app/app.jsx +135 -145
  144. package/src/app/app.module.css +11 -4
  145. package/src/app/header/header.jsx +0 -10
  146. package/src/assets/icons.svg +0 -8
  147. package/src/components/asset-info/asset-info.module.css +1 -0
  148. package/src/components/bundle-assets/bundle-assets.jsx +85 -31
  149. package/src/components/bundle-assets/bundle-assets.module.css +24 -26
  150. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.jsx +13 -25
  151. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  152. package/src/components/bundle-modules/bundle-modules.jsx +53 -36
  153. package/src/components/bundle-modules/bundle-modules.module.css +11 -2
  154. package/src/components/bundle-modules/bundle-modules.utils.js +16 -4
  155. package/src/components/bundle-modules/index.jsx +3 -0
  156. package/src/components/bundle-packages/bundle-packages.jsx +89 -39
  157. package/src/components/bundle-packages/bundle-packages.module.css +17 -21
  158. package/src/components/delta/delta.module.css +1 -0
  159. package/src/components/index.js +0 -1
  160. package/src/components/job-header/job-header.jsx +2 -1
  161. package/src/components/job-header/job-header.module.css +6 -8
  162. package/src/components/jobs-header/jobs-header.module.css +5 -0
  163. package/src/components/metrics-table/metrics-table.jsx +53 -44
  164. package/src/components/metrics-table/metrics-table.module.css +18 -7
  165. package/src/components/metrics-table-search/metrics-table-search.module.css +5 -4
  166. package/src/components/metrics-table-title/metrics-table-title.jsx +20 -21
  167. package/src/components/metrics-table-title/metrics-table-title.module.css +2 -0
  168. package/src/components/module-info/module-info.jsx +3 -7
  169. package/src/components/module-info/module-info.module.css +1 -0
  170. package/src/components/summary/summary.jsx +7 -8
  171. package/src/components/summary/summary.module.css +1 -1
  172. package/src/components/summary-item/summary-item.jsx +23 -40
  173. package/src/components/summary-item/summary-item.module.css +1 -34
  174. package/src/components/total-size-type-title/total-size-type-title.jsx +6 -9
  175. package/src/constants.js +11 -7
  176. package/src/css/default.css +14 -3
  177. package/src/css/variables.css +17 -17
  178. package/src/hooks/search-params.js +42 -33
  179. package/src/layout/box/box.module.css +9 -0
  180. package/src/layout/footer/footer.module.css +1 -1
  181. package/src/layout/index.js +1 -0
  182. package/src/layout/separator.jsx +25 -0
  183. package/src/layout/separator.module.css +5 -0
  184. package/src/ui/alert/alert.jsx +2 -7
  185. package/src/ui/dropdown/dropdown.jsx +16 -22
  186. package/src/ui/dropdown/dropdown.module.css +11 -12
  187. package/src/ui/empty-set/empty-set.jsx +25 -21
  188. package/src/ui/empty-set/empty-set.module.css +2 -2
  189. package/src/ui/filters/filters.jsx +64 -53
  190. package/src/ui/filters/filters.module.css +3 -3
  191. package/src/ui/hover-card/hover-card.jsx +73 -0
  192. package/src/ui/hover-card/hover-card.module.css +29 -0
  193. package/src/ui/hover-card/index.js +1 -0
  194. package/src/ui/icon/icon.jsx +11 -9
  195. package/src/ui/icon/icon.module.css +1 -0
  196. package/src/ui/index.js +1 -1
  197. package/src/ui/table/table.jsx +5 -52
  198. package/src/ui/table/table.module.css +41 -25
  199. package/src/ui/tag/index.js +1 -0
  200. package/src/ui/tag/tag.jsx +49 -0
  201. package/src/ui/tag/tag.module.css +55 -0
  202. package/src/ui/tooltip/tooltip.jsx +10 -14
  203. package/src/ui/tooltip/tooltip.module.css +2 -1
  204. package/lib/assets/icons/alert-circle.svg +0 -1
  205. package/lib/assets/icons/check-circle.svg +0 -1
  206. package/lib/components/budget-info/budget-info.js +0 -80
  207. package/lib/components/budget-info/budget-info.module.css +0 -40
  208. package/lib/components/budget-info/budget-info.stories.js +0 -44
  209. package/lib/components/budget-insights/budget-insights.js +0 -200
  210. package/lib/components/budget-insights/budget-insights.module.css +0 -53
  211. package/lib/components/budget-insights/budget-insights.stories.js +0 -104
  212. package/lib/components/budget-insights/index.js +0 -18
  213. package/lib/ui/popover/popover.js +0 -92
  214. package/lib/ui/popover/popover.module.css +0 -66
  215. package/lib/ui/popover/popover.stories.js +0 -26
  216. package/lib-esm/assets/icons/alert-circle.svg +0 -1
  217. package/lib-esm/assets/icons/check-circle.svg +0 -1
  218. package/lib-esm/components/budget-info/budget-info.js +0 -58
  219. package/lib-esm/components/budget-info/budget-info.module.css +0 -40
  220. package/lib-esm/components/budget-info/budget-info.stories.js +0 -30
  221. package/lib-esm/components/budget-info/index.js +0 -1
  222. package/lib-esm/components/budget-insights/budget-insights.js +0 -148
  223. package/lib-esm/components/budget-insights/budget-insights.module.css +0 -53
  224. package/lib-esm/components/budget-insights/budget-insights.stories.js +0 -84
  225. package/lib-esm/components/budget-insights/index.js +0 -1
  226. package/lib-esm/ui/popover/index.js +0 -1
  227. package/lib-esm/ui/popover/popover.js +0 -71
  228. package/lib-esm/ui/popover/popover.module.css +0 -66
  229. package/lib-esm/ui/popover/popover.stories.js +0 -14
  230. package/src/assets/icons/alert-circle.svg +0 -1
  231. package/src/assets/icons/check-circle.svg +0 -1
  232. package/src/components/budget-info/budget-info.jsx +0 -65
  233. package/src/components/budget-info/budget-info.module.css +0 -40
  234. package/src/components/budget-info/index.js +0 -1
  235. package/src/components/budget-insights/budget-insights.jsx +0 -157
  236. package/src/components/budget-insights/budget-insights.module.css +0 -53
  237. package/src/components/budget-insights/index.js +0 -1
  238. package/src/ui/popover/index.js +0 -1
  239. package/src/ui/popover/popover.jsx +0 -79
  240. package/src/ui/popover/popover.module.css +0 -66
@@ -41,18 +41,17 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
41
41
 
42
42
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
43
43
 
44
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
-
46
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
44
+ var addRowSourceFlag = function addRowSourceFlag(row) {
45
+ var key = row.key,
46
+ runs = row.runs; // @NOTE Assign instead destructuring for perf reasons
47
+ // eslint-disable-next-line no-param-reassign
47
48
 
48
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
49
+ row.thirdParty = Boolean(key.match(_webpack.MODULE_PATH_PACKAGES)); // eslint-disable-next-line no-param-reassign
49
50
 
50
- var addRowSourceFlag = function addRowSourceFlag(row) {
51
- var key = row.key;
52
- var thirdParty = Boolean(key.match(_webpack.MODULE_PATH_PACKAGES));
53
- return _objectSpread(_objectSpread({}, row), {}, {
54
- thirdParty: thirdParty
55
- });
51
+ row.duplicated = Boolean(runs.find(function (run) {
52
+ return (run === null || run === void 0 ? void 0 : run.duplicated) === true;
53
+ }));
54
+ return row;
56
55
  };
57
56
 
58
57
  exports.addRowSourceFlag = addRowSourceFlag;
@@ -82,6 +81,11 @@ var getRowFilter = function getRowFilter(filters) {
82
81
  // Skip not changed rows
83
82
  if (filters[_utils.MODULE_FILTERS.CHANGED] && !row.changed) {
84
83
  return false;
84
+ } // Skip not duplicated rows
85
+
86
+
87
+ if (filters[_utils.MODULE_FILTERS.DUPLICATED] && !row.duplicated) {
88
+ return false;
85
89
  } // Skip not matching source type
86
90
 
87
91
 
@@ -72,12 +72,12 @@ var BundleModules = function BundleModules(props) {
72
72
 
73
73
  var _useMemo = (0, _react.useMemo)(function () {
74
74
  return {
75
- defaultFilters: _objectSpread(_objectSpread(_objectSpread({
75
+ defaultFilters: _objectSpread(_objectSpread(_objectSpread(_objectSpread({
76
76
  changed: (jobs === null || jobs === void 0 ? void 0 : jobs.length) > 1
77
- }, (0, _utils.getModuleSourceTypeFilters)(true)), (0, _utils.getModuleChunkFilters)(chunkIds, true)), (0, _utils.getModuleFileTypeFilters)(true)),
78
- allEntriesFilters: _objectSpread(_objectSpread(_objectSpread({
77
+ }, (0, _utils.getModuleSourceTypeFilters)(true)), (0, _utils.getModuleChunkFilters)(chunkIds, true)), (0, _utils.getModuleFileTypeFilters)(true)), {}, _defineProperty({}, _utils.MODULE_FILTERS.DUPLICATED, false)),
78
+ allEntriesFilters: _objectSpread(_objectSpread(_objectSpread(_objectSpread({
79
79
  changed: false
80
- }, (0, _utils.getModuleSourceTypeFilters)(true)), (0, _utils.getModuleChunkFilters)(chunkIds, true)), (0, _utils.getModuleFileTypeFilters)(true))
80
+ }, (0, _utils.getModuleSourceTypeFilters)(true)), (0, _utils.getModuleChunkFilters)(chunkIds, true)), (0, _utils.getModuleFileTypeFilters)(true)), {}, _defineProperty({}, _utils.MODULE_FILTERS.DUPLICATED, false))
81
81
  };
82
82
  }, [jobs]),
83
83
  defaultFilters = _useMemo.defaultFilters,
@@ -27,10 +27,12 @@ var _emptySet = require("../../ui/empty-set");
27
27
 
28
28
  var _filters = require("../../ui/filters");
29
29
 
30
- var _popover = require("../../ui/popover");
30
+ var _hoverCard = require("../../ui/hover-card");
31
31
 
32
32
  var _sortDropdown = require("../../ui/sort-dropdown");
33
33
 
34
+ var _tag = require("../../ui/tag");
35
+
34
36
  var _toolbar = require("../../ui/toolbar");
35
37
 
36
38
  var _fileName = require("../../ui/file-name");
@@ -83,36 +85,36 @@ var PackagePopoverContent = function PackagePopoverContent(_ref) {
83
85
  packageId = _name$split2[1];
84
86
 
85
87
  return /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
86
- space: "xxsmall",
87
- className: _bundlePackagesModule["default"].packagePopover
88
+ space: "xsmall",
89
+ className: _bundlePackagesModule["default"].packageHoverCard
88
90
  }, /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
89
91
  space: "xxxsmall"
90
92
  }, /*#__PURE__*/_react["default"].createElement("h3", {
91
- className: _bundlePackagesModule["default"].packagePopoverTitle
93
+ className: _bundlePackagesModule["default"].packageHoverCardTitle
92
94
  }, normalizedName, packageId && /*#__PURE__*/_react["default"].createElement("span", {
93
- className: _bundlePackagesModule["default"].packagePopoverTitleIndex
95
+ className: _bundlePackagesModule["default"].packageHoverCardTitleIndex
94
96
  }, "".concat(_utils.PACKAGE_ID_SEPARATOR).concat(packageId))), /*#__PURE__*/_react["default"].createElement("p", {
95
- className: _bundlePackagesModule["default"].packagePopoverPath
97
+ className: _bundlePackagesModule["default"].packageHoverCardPath
96
98
  }, /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
97
- className: _bundlePackagesModule["default"].packagePopoverPathValue,
99
+ className: _bundlePackagesModule["default"].packageHoverCardPathValue,
98
100
  name: normalizedPackagePath
99
101
  }))), /*#__PURE__*/_react["default"].createElement("ul", {
100
- className: _bundlePackagesModule["default"].packagePopoverList
102
+ className: _bundlePackagesModule["default"].packageHoverCardList
101
103
  }, /*#__PURE__*/_react["default"].createElement("li", {
102
- className: _bundlePackagesModule["default"].packagePopoverItem
104
+ className: _bundlePackagesModule["default"].packageHoverCardItem
103
105
  }, /*#__PURE__*/_react["default"].createElement("a", {
104
106
  href: "https://www.npmjs.com/package/".concat(normalizedName),
105
107
  target: "_blank",
106
108
  rel: "noreferrer"
107
109
  }, "npmjs.com")), /*#__PURE__*/_react["default"].createElement("li", {
108
- className: _bundlePackagesModule["default"].packagePopoverItem
110
+ className: _bundlePackagesModule["default"].packageHoverCardItem
109
111
  }, /*#__PURE__*/_react["default"].createElement("a", {
110
112
  href: "https://bundlephobia.com/result?p=".concat(normalizedName),
111
113
  target: "_blank",
112
114
  rel: "noreferrer"
113
115
  }, "bundlephobia.com"))), /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
114
116
  space: "xxxsmall",
115
- className: _bundlePackagesModule["default"].packagePopover.actions
117
+ className: _bundlePackagesModule["default"].packageHoverCardActions
116
118
  }, duplicate && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(CustomComponentLink, (0, _utils.getBundlePackagesByNameComponentLink)(normalizedName), "View all duplicate instances")), /*#__PURE__*/_react["default"].createElement(CustomComponentLink, (0, _utils.getBundleModulesBySearch)(normalizedPackagePath), "Search modules by package path")));
117
119
  };
118
120
 
@@ -127,39 +129,91 @@ PackagePopoverContent.defaultProps = {
127
129
  path: ''
128
130
  };
129
131
 
130
- var PackageRowHeader = function PackageRowHeader(_ref2) {
131
- var item = _ref2.item,
132
+ var PackageName = function PackageName(_ref2) {
133
+ var packageName = _ref2.packageName,
134
+ path = _ref2.path,
135
+ showDuplicateFlag = _ref2.showDuplicateFlag,
136
+ row = _ref2.row,
132
137
  CustomComponentLink = _ref2.CustomComponentLink;
133
- var packageNames = item.label.split(_utils.PACKAGES_SEPARATOR);
134
138
 
135
- var _ref3 = item.runs[0] || {},
136
- path = _ref3.path;
139
+ var _useState = (0, _react.useState)(false),
140
+ _useState2 = _slicedToArray(_useState, 2),
141
+ showHoverCard = _useState2[0],
142
+ setHoverCard = _useState2[1];
143
+
144
+ var handleOnMouseEnter = (0, _react.useCallback)(function () {
145
+ return setHoverCard(true);
146
+ }, [showHoverCard]);
147
+ var label = (0, _react.useMemo)(function () {
148
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, showDuplicateFlag && row.duplicate && /*#__PURE__*/_react["default"].createElement(_tag.Tag, {
149
+ className: _bundlePackagesModule["default"].packageNameTagDuplicate,
150
+ title: "Duplicate package",
151
+ kind: _tag.Tag.KINDS.DANGER,
152
+ size: _tag.Tag.SIZES.SMALL
153
+ }), /*#__PURE__*/_react["default"].createElement("span", {
154
+ className: _bundlePackagesModule["default"].packageNameLabel
155
+ }, packageName));
156
+ }, [packageName, showDuplicateFlag, row]);
157
+
158
+ if (!showHoverCard) {
159
+ return /*#__PURE__*/_react["default"].createElement("span", {
160
+ className: _bundlePackagesModule["default"].packageName,
161
+ onMouseEnter: handleOnMouseEnter
162
+ }, label);
163
+ }
164
+
165
+ return /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
166
+ className: _bundlePackagesModule["default"].packageName,
167
+ label: /*#__PURE__*/_react["default"].createElement("span", {
168
+ className: _bundlePackagesModule["default"].packageName
169
+ }, label)
170
+ }, /*#__PURE__*/_react["default"].createElement(PackagePopoverContent, {
171
+ name: packageName,
172
+ path: path,
173
+ fullName: row.label,
174
+ duplicate: row.duplicate,
175
+ CustomComponentLink: CustomComponentLink
176
+ }));
177
+ };
178
+
179
+ PackageName.propTypes = {
180
+ packageName: _propTypes["default"].string.isRequired,
181
+ path: _propTypes["default"].string.isRequired,
182
+ showDuplicateFlag: _propTypes["default"].bool.isRequired,
183
+ row: _propTypes["default"].shape({
184
+ label: _propTypes["default"].string,
185
+ duplicate: _propTypes["default"].bool,
186
+ runs: _propTypes["default"].arrayOf(_propTypes["default"].shape({
187
+ path: _propTypes["default"].string
188
+ })).isRequired
189
+ }).isRequired,
190
+ CustomComponentLink: _propTypes["default"].elementType.isRequired
191
+ };
192
+
193
+ var RowHeader = function RowHeader(_ref3) {
194
+ var row = _ref3.row,
195
+ CustomComponentLink = _ref3.CustomComponentLink;
196
+ var packageNames = row.label.split(_utils.PACKAGES_SEPARATOR);
197
+
198
+ var _ref4 = row.runs[0] || {},
199
+ path = _ref4.path;
137
200
 
138
201
  return /*#__PURE__*/_react["default"].createElement("span", {
139
202
  className: _bundlePackagesModule["default"].packageNames
140
203
  }, packageNames.map(function (packageName, index) {
141
- // Render duplicate flag only for the last entry
142
- var duplicateFlag = index === packageNames.length - 1 && item.duplicate && /*#__PURE__*/_react["default"].createElement("span", {
143
- className: _bundlePackagesModule["default"].duplicate,
144
- title: "Duplicate package"
145
- }, "D");
146
-
147
- return /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
148
- className: _bundlePackagesModule["default"].packageName,
149
- icon: duplicateFlag,
150
- label: packageName
151
- }, /*#__PURE__*/_react["default"].createElement(PackagePopoverContent, {
152
- name: packageName,
153
- path: path,
154
- fullName: item.label,
155
- duplicate: item.duplicate,
204
+ return /*#__PURE__*/_react["default"].createElement(PackageName, {
205
+ packageName: packageName,
206
+ path: path // Render duplicate flag only for the last entry
207
+ ,
208
+ showDuplicateFlag: index === packageNames.length - 1,
209
+ row: row,
156
210
  CustomComponentLink: CustomComponentLink
157
- }));
211
+ });
158
212
  }));
159
213
  };
160
214
 
161
- PackageRowHeader.propTypes = {
162
- item: _propTypes["default"].shape({
215
+ RowHeader.propTypes = {
216
+ row: _propTypes["default"].shape({
163
217
  label: _propTypes["default"].string,
164
218
  duplicate: _propTypes["default"].bool,
165
219
  runs: _propTypes["default"].arrayOf(_propTypes["default"].shape({
@@ -170,7 +224,7 @@ PackageRowHeader.propTypes = {
170
224
  };
171
225
 
172
226
  var BundlePackages = function BundlePackages(props) {
173
- var _ref5;
227
+ var _ref6;
174
228
 
175
229
  var className = props.className,
176
230
  jobs = props.jobs,
@@ -195,9 +249,9 @@ var BundlePackages = function BundlePackages(props) {
195
249
  handleViewAll: resetAllFilters
196
250
  });
197
251
 
198
- var renderRowHeader = (0, _react.useCallback)(function (item) {
199
- return /*#__PURE__*/_react["default"].createElement(PackageRowHeader, {
200
- item: item,
252
+ var renderRowHeader = (0, _react.useCallback)(function (row) {
253
+ return /*#__PURE__*/_react["default"].createElement(RowHeader, {
254
+ row: row,
201
255
  CustomComponentLink: CustomComponentLink
202
256
  });
203
257
  }, [CustomComponentLink]);
@@ -205,8 +259,8 @@ var BundlePackages = function BundlePackages(props) {
205
259
  className: (0, _classnames["default"])(_bundlePackagesModule["default"].root, className)
206
260
  }, /*#__PURE__*/_react["default"].createElement(_toolbar.Toolbar, {
207
261
  className: _bundlePackagesModule["default"].toolbar,
208
- renderActions: function renderActions(_ref4) {
209
- var actionClassName = _ref4.actionClassName;
262
+ renderActions: function renderActions(_ref5) {
263
+ var actionClassName = _ref5.actionClassName;
210
264
  return /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
211
265
  space: "xxsmall",
212
266
  className: (0, _classnames["default"])(_bundlePackagesModule["default"].dropdown, actionClassName)
@@ -219,20 +273,22 @@ var BundlePackages = function BundlePackages(props) {
219
273
  handleResetFilters: resetFilters
220
274
  }));
221
275
  }
222
- }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, null, /*#__PURE__*/_react["default"].createElement(_metricsTableSearch.MetricsTableSearch, {
276
+ }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
277
+ space: "xxsmall"
278
+ }, /*#__PURE__*/_react["default"].createElement(_metricsTableSearch.MetricsTableSearch, {
223
279
  className: _bundlePackagesModule["default"].toolbarSearch,
224
280
  placeholder: "Search by name",
225
281
  search: search,
226
282
  updateSearch: updateSearch
227
283
  }), /*#__PURE__*/_react["default"].createElement(_filters.Filters, {
228
- filters: (_ref5 = {}, _defineProperty(_ref5, _utils.PACKAGE_FILTERS.CHANGED, {
284
+ filters: (_ref6 = {}, _defineProperty(_ref6, _utils.PACKAGE_FILTERS.CHANGED, {
229
285
  label: 'Changed',
230
286
  defaultValue: filters[_utils.PACKAGE_FILTERS.CHANGED],
231
287
  disabled: jobs.length <= 1
232
- }), _defineProperty(_ref5, _utils.PACKAGE_FILTERS.DUPLICATE, {
288
+ }), _defineProperty(_ref6, _utils.PACKAGE_FILTERS.DUPLICATE, {
233
289
  label: 'Duplicate',
234
290
  defaultValue: filters[_utils.PACKAGE_FILTERS.DUPLICATE]
235
- }), _ref5),
291
+ }), _ref6),
236
292
  label: "Filters (".concat(items.length, "/").concat(totalRowCount, ")"),
237
293
  onChange: updateFilters,
238
294
  hasActiveFilters: hasActiveFilters
@@ -12,23 +12,8 @@
12
12
  margin-right: -1px; /** collapse border */
13
13
  }
14
14
 
15
- .duplicate {
16
- margin-right: var(--space-xxxsmall);
17
- display: inline-block;
18
- width: var(--space-small);
19
- height: var(--space-small);
20
- font-size: 10px;
21
- font-weight: bold;
22
- line-height: var(--space-small);
23
- text-align: center;
24
- text-transform: uppercase;
25
- vertical-align: middle;
26
-
27
- background: var(--color-danger);
28
- color: var(--color-light);
29
- }
30
-
31
15
  .packageName {
16
+ display: inline-block;
32
17
  color: var(--color-text-light);
33
18
  }
34
19
 
@@ -43,22 +28,33 @@
43
28
  color: var(--color-text-ultra-light);
44
29
  }
45
30
 
46
- .packagePopover {
47
- min-width: 320px;
31
+ .packageNameTagDuplicate {
32
+ margin-right: var(--space-xxxsmall);
33
+ vertical-align: middle;
34
+ }
35
+
36
+ .packageNameLabel {
37
+ vertical-align: middle;
38
+ }
39
+
40
+ .packageNameTagDuplicate::before {
41
+ content: 'd';
48
42
  }
49
43
 
50
- .packagePopoverTitleIndex {
44
+
45
+ .packageHoverCardTitleIndex {
51
46
  color: var(--color-text-light);
52
47
  font-weight: normal;
53
48
  }
54
49
 
55
- .packagePopoverPathValue {
50
+ .packageHoverCardPathValue {
51
+ width: 100%;
56
52
  padding: var(--space-xxxsmall);
57
53
  background: var(--color-highlight-warning);
58
54
  font-family: var(--font-family-monospace);
59
55
  }
60
56
 
61
- .packagePopoverList {
57
+ .packageHoverCardList {
62
58
  padding: 0;
63
59
  list-style: inside;
64
60
  }
@@ -28,6 +28,7 @@
28
28
  }
29
29
 
30
30
  .inverted {
31
+ border-radius: var(--radius-small);
31
32
  background-color: var(--color-gray-ultra-light);
32
33
  color: var(--color-light);
33
34
  }
@@ -9,12 +9,6 @@ Object.defineProperty(exports, "BrowsertimeTable", {
9
9
  return _browsertimeTable.BrowsertimeTable;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "BudgetInsights", {
13
- enumerable: true,
14
- get: function get() {
15
- return _budgetInsights.BudgetInsights;
16
- }
17
- });
18
12
  Object.defineProperty(exports, "BundleAssets", {
19
13
  enumerable: true,
20
14
  get: function get() {
@@ -154,8 +148,6 @@ var _bundlePackages = require("./bundle-packages");
154
148
 
155
149
  var _bundleModules = require("./bundle-modules");
156
150
 
157
- var _budgetInsights = require("./budget-insights");
158
-
159
151
  var _componentLink = require("./component-link");
160
152
 
161
153
  var _duplicatePackagesWarning = require("./duplicate-packages-warning");
@@ -23,6 +23,8 @@ var _stack = require("../../layout/stack");
23
23
 
24
24
  var _icon = require("../../ui/icon");
25
25
 
26
+ var _tag = require("../../ui/tag");
27
+
26
28
  var _jobHeaderModule = _interopRequireDefault(require("./job-header.module.css"));
27
29
 
28
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -43,7 +45,7 @@ var JobHeader = function JobHeader(props) {
43
45
  space: "xxsmall"
44
46
  }, /*#__PURE__*/_react["default"].createElement("h1", {
45
47
  className: _jobHeaderModule["default"].title
46
- }, /*#__PURE__*/_react["default"].createElement("span", null, "#".concat(job.internalBuildNumber)), tag && /*#__PURE__*/_react["default"].createElement("span", {
48
+ }, /*#__PURE__*/_react["default"].createElement("span", null, "#".concat(job.internalBuildNumber)), tag && /*#__PURE__*/_react["default"].createElement(_tag.Tag, {
47
49
  className: _jobHeaderModule["default"].tag
48
50
  }, tag)), /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
49
51
  className: _jobHeaderModule["default"].meta,
@@ -1,22 +1,20 @@
1
1
  .title {
2
+ font-size: var(--size-xlarge);
2
3
  line-height: 1;
3
4
  font-weight: bold;
4
5
  vertical-align: top;
5
6
  }
6
7
 
7
8
  .tag {
8
- padding: var(--space-xxxsmall);
9
- margin-left: var(--space-xxxsmall);
10
- background-color: var(--color-highlight);
11
- color: var(--color-text-light);
12
- display: inline-block;
13
- font-size: 9px;
14
- line-height: var(--space-xxsmall);
15
- font-weight: normal;
9
+ margin-left: var(--space-xxsmall);
16
10
  vertical-align: top;
11
+ outline: 1px solid var(--color-outline);
12
+ background: var(--color-highlight);
13
+ color: var(--color-text-light);
17
14
  }
18
15
 
19
16
  .meta {
17
+ font-size: var(--size-small);
20
18
  color: var(--color-text-light);
21
19
  }
22
20
 
@@ -9,3 +9,8 @@
9
9
  padding: 0 var(--space-medium);
10
10
  border-left: 1px solid var(--color-outline);
11
11
  }
12
+
13
+ .item:first-child {
14
+ border-left: 0;
15
+ padding-left: 0;
16
+ }
@@ -31,12 +31,20 @@ var _jobName = require("../job-name");
31
31
 
32
32
  var _metricsTableModule = _interopRequireDefault(require("./metrics-table.module.css"));
33
33
 
34
+ var _excluded = ["className", "renderRowHeader", "runs", "items", "emptyMessage", "showHeaderSum", "headerRows", "title"];
35
+
34
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
37
 
36
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
39
 
38
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
39
41
 
42
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
43
+
44
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
45
+
46
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
47
+
40
48
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
41
49
 
42
50
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -131,52 +139,66 @@ var getHeaderRows = function getHeaderRows(runs, items, showHeaderSum, title) {
131
139
  }] : []));
132
140
  };
133
141
 
134
- var generateRowCells = function generateRowCells(item, index, items) {
135
- var isBaseline = index === items.length - 1; // eslint-disable-next-line react/destructuring-assignment
136
-
137
- if (!item || typeof item.value === 'undefined') {
138
- return ['-'].concat(_toConsumableArray(!isBaseline ? [''] : []));
139
- }
140
-
141
- var displayValue = item.displayValue,
142
- deltaPercentage = item.deltaPercentage,
143
- displayDeltaPercentage = item.displayDeltaPercentage,
144
- deltaType = item.deltaType;
145
- var cells = [/*#__PURE__*/_react["default"].createElement(_metric.Metric, {
146
- value: displayValue
147
- })];
142
+ var MetricsTableRow = function MetricsTableRow(_ref) {
143
+ var item = _ref.item,
144
+ renderRowHeader = _ref.renderRowHeader;
145
+ return /*#__PURE__*/_react["default"].createElement(_table.Table.Tr, {
146
+ className: (0, _classnames["default"])(!item.changed && _metricsTableModule["default"].unchanged)
147
+ }, /*#__PURE__*/_react["default"].createElement(_table.Table.Th, {
148
+ className: _metricsTableModule["default"].metricName
149
+ }, renderRowHeader(item)), item.runs.map(function (run, index) {
150
+ var isBaseline = index === item.runs.length - 1;
151
+ var valueClassName = (0, _classnames["default"])(_metricsTableModule["default"].value, !isBaseline && _metricsTableModule["default"].current); // Empty cells if no value
152
+
153
+ if (!run || typeof run.value === 'undefined') {
154
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_table.Table.Td, {
155
+ className: valueClassName
156
+ }, "-"), !isBaseline && /*#__PURE__*/_react["default"].createElement(_table.Table.Td, {
157
+ className: _metricsTableModule["default"].delta
158
+ }));
159
+ }
148
160
 
149
- if (!isBaseline) {
150
- cells.push(typeof deltaPercentage === 'number' && /*#__PURE__*/_react["default"].createElement(_delta.Delta, {
161
+ var displayValue = run.displayValue,
162
+ deltaPercentage = run.deltaPercentage,
163
+ displayDeltaPercentage = run.displayDeltaPercentage,
164
+ deltaType = run.deltaType;
165
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_table.Table.Td, {
166
+ className: valueClassName
167
+ }, /*#__PURE__*/_react["default"].createElement(_metric.Metric, {
168
+ value: displayValue
169
+ })), !isBaseline && typeof deltaPercentage === 'number' && /*#__PURE__*/_react["default"].createElement(_table.Table.Td, {
170
+ className: _metricsTableModule["default"].delta
171
+ }, /*#__PURE__*/_react["default"].createElement(_delta.Delta, {
151
172
  displayValue: displayDeltaPercentage,
152
173
  deltaType: deltaType
153
- }));
154
- }
155
-
156
- return cells;
174
+ })));
175
+ }));
157
176
  };
158
177
 
159
- var getRows = function getRows(runs, items, renderRowHeader) {
160
- return items.map(function (item, index) {
161
- var changed = item.changed;
162
- return {
163
- key: (item === null || item === void 0 ? void 0 : item.key) || index,
164
- className: changed ? '' : _metricsTableModule["default"].unchanged,
165
- cells: [// Metric name
166
- renderRowHeader(item)].concat(_toConsumableArray(item.runs.map(generateRowCells).flat()))
167
- };
168
- });
178
+ MetricsTableRow.propTypes = {
179
+ item: _propTypes["default"].shape({
180
+ changed: _propTypes["default"].bool,
181
+ runs: _propTypes["default"].arrayOf(_propTypes["default"].shape({
182
+ value: _propTypes["default"].number,
183
+ displayValue: _propTypes["default"].string,
184
+ deltaPercentage: _propTypes["default"].number,
185
+ displayDeltaPercentage: _propTypes["default"].string,
186
+ deltaType: _propTypes["default"].string
187
+ }))
188
+ }).isRequired,
189
+ renderRowHeader: _propTypes["default"].func.isRequired
169
190
  };
170
191
 
171
- var MetricsTable = function MetricsTable(_ref) {
172
- var className = _ref.className,
173
- renderRowHeader = _ref.renderRowHeader,
174
- runs = _ref.runs,
175
- items = _ref.items,
176
- emptyMessage = _ref.emptyMessage,
177
- showHeaderSum = _ref.showHeaderSum,
178
- headerRows = _ref.headerRows,
179
- title = _ref.title;
192
+ var MetricsTable = function MetricsTable(_ref2) {
193
+ var className = _ref2.className,
194
+ renderRowHeader = _ref2.renderRowHeader,
195
+ runs = _ref2.runs,
196
+ items = _ref2.items,
197
+ emptyMessage = _ref2.emptyMessage,
198
+ showHeaderSum = _ref2.showHeaderSum,
199
+ headerRows = _ref2.headerRows,
200
+ title = _ref2.title,
201
+ restProps = _objectWithoutProperties(_ref2, _excluded);
180
202
 
181
203
  var _useMemo = (0, _react.useMemo)(function () {
182
204
  var headerColumns = getHeaderRows(runs, items, showHeaderSum, title);
@@ -191,37 +213,28 @@ var MetricsTable = function MetricsTable(_ref) {
191
213
  headers = _useMemo.headers,
192
214
  columnClassNames = _useMemo.columnClassNames;
193
215
 
194
- var rows = (0, _react.useMemo)(function () {
195
- return getRows(runs, items, renderRowHeader);
196
- }, [runs, items, renderRowHeader]);
197
216
  var rootClassName = (0, _classnames["default"])(_metricsTableModule["default"].root, className, runs.length > 1 && _metricsTableModule["default"].multipleRuns, showHeaderSum && _metricsTableModule["default"].showHeaderSum);
198
- return /*#__PURE__*/_react["default"].createElement(_table.Table, {
217
+ return /*#__PURE__*/_react["default"].createElement(_table.Table, _extends({
199
218
  className: rootClassName,
200
219
  compact: true
201
- }, /*#__PURE__*/_react["default"].createElement(_table.Table.THead, null, headers.map(function (headerRow) {
202
- var _ref2 = headerRow.cells ? headerRow : {
220
+ }, restProps), /*#__PURE__*/_react["default"].createElement(_table.Table.THead, null, headers.map(function (headerRow) {
221
+ var _ref3 = headerRow.cells ? headerRow : {
203
222
  cells: headerRow
204
223
  },
205
- cells = _ref2.cells,
206
- rowClassName = _ref2.className;
224
+ cells = _ref3.cells,
225
+ rowClassName = _ref3.className;
207
226
 
208
227
  return /*#__PURE__*/_react["default"].createElement(_table.Table.Tr, {
209
228
  className: rowClassName
210
229
  }, cells.map(function (header) {
211
230
  return /*#__PURE__*/_react["default"].createElement(_table.Table.Th, header);
212
231
  }));
213
- })), /*#__PURE__*/_react["default"].createElement(_table.Table.TBody, null, !(0, _isEmpty2["default"])(rows) ? rows.map(function (_ref3) {
214
- var key = _ref3.key,
215
- rowClassName = _ref3.className,
216
- cells = _ref3.cells;
217
- return /*#__PURE__*/_react["default"].createElement(_table.Table.Tr, {
218
- key: key,
219
- className: rowClassName
220
- }, cells.map(function (cell, index) {
221
- return /*#__PURE__*/_react["default"].createElement(_table.Table.Td, {
222
- className: columnClassNames[index]
223
- }, cell);
224
- }));
232
+ })), /*#__PURE__*/_react["default"].createElement(_table.Table.TBody, null, !(0, _isEmpty2["default"])(items) ? items.map(function (item) {
233
+ return /*#__PURE__*/_react["default"].createElement(MetricsTableRow, {
234
+ key: item.key,
235
+ item: item,
236
+ renderRowHeader: renderRowHeader
237
+ });
225
238
  }) : /*#__PURE__*/_react["default"].createElement(_table.Table.Tr, null, /*#__PURE__*/_react["default"].createElement(_table.Table.Td, {
226
239
  className: _metricsTableModule["default"].empty,
227
240
  colSpan: (columnClassNames === null || columnClassNames === void 0 ? void 0 : columnClassNames.length) || 1