@bundle-stats/ui 3.2.0-beta.1 → 3.2.1-beta.3

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 (255) hide show
  1. package/.babelrc.js +3 -3
  2. package/CHANGELOG.md +20 -4
  3. package/lib/assets/icons/arrow.svg +1 -0
  4. package/lib/assets/icons/cancel.svg +1 -0
  5. package/lib/assets/icons/clock.svg +1 -0
  6. package/lib/assets/icons/close.svg +1 -0
  7. package/lib/assets/icons/commit.svg +1 -0
  8. package/lib/assets/icons/filter.svg +1 -0
  9. package/lib/assets/icons/help.svg +1 -0
  10. package/lib/assets/icons/menu.svg +1 -0
  11. package/lib/{ui/icon/assets → assets/icons}/sort.svg +0 -0
  12. package/lib/assets/icons/warning.svg +1 -0
  13. package/lib/assets/icons.svg +1 -0
  14. package/lib/components/bundle-assets/bundle-assets.js +3 -3
  15. package/lib/components/bundle-assets/bundle-assets.stories.js +19 -7
  16. package/lib/components/bundle-assets/bundle-assets.utils.js +95 -28
  17. package/lib/components/bundle-assets/index.js +115 -4
  18. package/lib/components/bundle-modules/bundle-modules.js +3 -3
  19. package/lib/components/bundle-modules/bundle-modules.utils.js +152 -0
  20. package/lib/components/bundle-modules/index.js +135 -4
  21. package/lib/components/bundle-packages/bundle-packages.js +3 -3
  22. package/lib/components/bundle-packages/{bundle-packages.container.js → bundle-packages.utils.js} +8 -42
  23. package/lib/components/bundle-packages/index.js +111 -3
  24. package/lib/components/metrics-table/metrics-table.js +3 -7
  25. package/lib/components/metrics-table-search/metrics-table-search.js +2 -1
  26. package/lib/components/metrics-table-search/metrics-table-search.module.css +2 -1
  27. package/lib/hooks/rows-filter.js +28 -0
  28. package/lib/hooks/rows-sort.js +54 -0
  29. package/lib/{hocs/with-search.js → hooks/search-params.js} +15 -64
  30. package/lib/ui/icon/icon.js +4 -191
  31. package/lib/ui/sort-dropdown/sort-dropdown.js +12 -13
  32. package/lib/ui/sort-dropdown/sort-dropdown.stories.js +2 -2
  33. package/lib/utils.js +6 -3
  34. package/lib-esm/app/app.js +60 -70
  35. package/lib-esm/app/app.stories.js +50 -71
  36. package/lib-esm/app/header/header.js +5 -3
  37. package/lib-esm/assets/icons/arrow.svg +1 -0
  38. package/lib-esm/assets/icons/cancel.svg +1 -0
  39. package/lib-esm/assets/icons/clock.svg +1 -0
  40. package/lib-esm/assets/icons/close.svg +1 -0
  41. package/lib-esm/assets/icons/commit.svg +1 -0
  42. package/lib-esm/assets/icons/filter.svg +1 -0
  43. package/lib-esm/assets/icons/help.svg +1 -0
  44. package/lib-esm/assets/icons/menu.svg +1 -0
  45. package/lib-esm/{ui/icon/assets → assets/icons}/sort.svg +0 -0
  46. package/lib-esm/assets/icons/warning.svg +1 -0
  47. package/lib-esm/assets/icons.svg +1 -0
  48. package/lib-esm/components/asset-info/asset-info.js +21 -17
  49. package/lib-esm/components/asset-info/asset-info.stories.js +29 -33
  50. package/lib-esm/components/browsertime-table/browsertime-table.js +6 -4
  51. package/lib-esm/components/browsertime-table/browsertime-table.stories.js +9 -13
  52. package/lib-esm/components/bundle-assets/bundle-assets.constants.js +17 -15
  53. package/lib-esm/components/bundle-assets/bundle-assets.js +107 -97
  54. package/lib-esm/components/bundle-assets/bundle-assets.stories.js +58 -63
  55. package/lib-esm/components/bundle-assets/bundle-assets.utils.js +65 -21
  56. package/lib-esm/components/bundle-assets/index.js +89 -2
  57. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +49 -51
  58. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.stories.js +9 -13
  59. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +14 -13
  60. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +13 -19
  61. package/lib-esm/components/bundle-modules/bundle-modules.constants.js +17 -15
  62. package/lib-esm/components/bundle-modules/bundle-modules.js +112 -110
  63. package/lib-esm/components/bundle-modules/bundle-modules.stories.js +46 -58
  64. package/lib-esm/components/bundle-modules/bundle-modules.utils.js +98 -0
  65. package/lib-esm/components/bundle-modules/index.js +114 -3
  66. package/lib-esm/components/bundle-packages/bundle-packages.constants.js +17 -15
  67. package/lib-esm/components/bundle-packages/bundle-packages.js +71 -69
  68. package/lib-esm/components/bundle-packages/bundle-packages.stories.js +34 -46
  69. package/lib-esm/components/bundle-packages/bundle-packages.utils.js +44 -0
  70. package/lib-esm/components/bundle-packages/index.js +87 -2
  71. package/lib-esm/components/component-link.js +10 -13
  72. package/lib-esm/components/delta/delta.js +8 -6
  73. package/lib-esm/components/delta/delta.stories.js +26 -38
  74. package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.js +11 -9
  75. package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.stories.js +20 -26
  76. package/lib-esm/components/job-header/job-header.js +14 -11
  77. package/lib-esm/components/job-header/job-header.stories.js +12 -18
  78. package/lib-esm/components/job-meta/job-meta.js +15 -18
  79. package/lib-esm/components/job-meta/job-meta.stories.js +10 -12
  80. package/lib-esm/components/job-name/job-name.js +9 -12
  81. package/lib-esm/components/job-name/job-name.stories.js +15 -23
  82. package/lib-esm/components/jobs-header/jobs-header.js +12 -12
  83. package/lib-esm/components/jobs-header/jobs-header.stories.js +80 -86
  84. package/lib-esm/components/lighthouse-table/lighthouse-table.js +6 -4
  85. package/lib-esm/components/lighthouse-table/lighthouse-table.stories.js +10 -14
  86. package/lib-esm/components/metric/metric.js +15 -19
  87. package/lib-esm/components/metric/metric.stories.js +36 -58
  88. package/lib-esm/components/metrics-table/metrics-table.js +128 -139
  89. package/lib-esm/components/metrics-table/metrics-table.stories.js +27 -35
  90. package/lib-esm/components/metrics-table-options/metrics-table-options.js +16 -19
  91. package/lib-esm/components/metrics-table-options/metrics-table-options.stories.js +6 -12
  92. package/lib-esm/components/metrics-table-search/metrics-table-search.js +17 -18
  93. package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +2 -1
  94. package/lib-esm/components/metrics-table-search/metrics-table-search.stories.js +4 -9
  95. package/lib-esm/components/metrics-table-title/metrics-table-title.js +9 -7
  96. package/lib-esm/components/module-info/module-info.js +15 -13
  97. package/lib-esm/components/module-info/module-info.stories.js +20 -22
  98. package/lib-esm/components/summary/summary.js +25 -27
  99. package/lib-esm/components/summary/summary.stories.js +31 -46
  100. package/lib-esm/components/summary-item/summary-item.js +27 -28
  101. package/lib-esm/components/summary-item/summary-item.stories.js +40 -50
  102. package/lib-esm/components/total-size-type-title/total-size-type-title.js +4 -2
  103. package/lib-esm/constants.js +25 -30
  104. package/lib-esm/hooks/rows-filter.js +20 -0
  105. package/lib-esm/hooks/rows-sort.js +22 -0
  106. package/lib-esm/hooks/search-params.js +170 -0
  107. package/lib-esm/layout/box/box.js +12 -19
  108. package/lib-esm/layout/box/box.stories.js +34 -46
  109. package/lib-esm/layout/flex-stack/flex-stack.js +9 -12
  110. package/lib-esm/layout/flex-stack/flex-stack.stories.js +39 -49
  111. package/lib-esm/layout/footer/footer.js +11 -11
  112. package/lib-esm/layout/footer/footer.stories.js +7 -11
  113. package/lib-esm/layout/header/header.js +10 -14
  114. package/lib-esm/layout/header/header.stories.js +50 -44
  115. package/lib-esm/layout/stack/stack.js +8 -6
  116. package/lib-esm/layout/stack/stack.stories.js +39 -49
  117. package/lib-esm/layout/sub-header/sub-header.js +14 -12
  118. package/lib-esm/layout/sub-header/sub-header.stories.js +57 -69
  119. package/lib-esm/prototypes/typography.stories.js +49 -58
  120. package/lib-esm/query-state.js +13 -16
  121. package/lib-esm/stories/wrapper.js +6 -12
  122. package/lib-esm/ui/alert/alert.js +6 -4
  123. package/lib-esm/ui/alert/alert.stories.js +14 -24
  124. package/lib-esm/ui/container/container.js +6 -9
  125. package/lib-esm/ui/container/container.stories.js +15 -17
  126. package/lib-esm/ui/dropdown/dropdown.js +13 -11
  127. package/lib-esm/ui/dropdown/dropdown.stories.js +22 -26
  128. package/lib-esm/ui/empty-set/empty-set.js +12 -12
  129. package/lib-esm/ui/empty-set/empty-set.stories.js +11 -19
  130. package/lib-esm/ui/file-name/file-name.js +6 -4
  131. package/lib-esm/ui/file-name/file-name.stories.js +12 -16
  132. package/lib-esm/ui/filters/filters.container.js +57 -76
  133. package/lib-esm/ui/filters/filters.js +71 -77
  134. package/lib-esm/ui/filters/filters.stories.js +82 -100
  135. package/lib-esm/ui/filters/filters.utils.js +26 -24
  136. package/lib-esm/ui/filters/index.js +1 -1
  137. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.js +68 -78
  138. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.stories.js +67 -77
  139. package/lib-esm/ui/icon/icon.js +13 -202
  140. package/lib-esm/ui/icon/icon.stories.js +16 -24
  141. package/lib-esm/ui/input/input.js +7 -10
  142. package/lib-esm/ui/input/input.stories.js +8 -12
  143. package/lib-esm/ui/loader/loader.js +6 -9
  144. package/lib-esm/ui/loader/loader.stories.js +5 -9
  145. package/lib-esm/ui/logo/logo.constants.js +6 -6
  146. package/lib-esm/ui/logo/logo.js +15 -15
  147. package/lib-esm/ui/logo/logo.stories.js +14 -22
  148. package/lib-esm/ui/panels/panels.js +13 -23
  149. package/lib-esm/ui/panels/panels.stories.js +14 -16
  150. package/lib-esm/ui/popover/popover.js +11 -9
  151. package/lib-esm/ui/popover/popover.stories.js +7 -11
  152. package/lib-esm/ui/skeleton/skeleton.js +6 -9
  153. package/lib-esm/ui/skeleton/skeleton.stories.js +2 -4
  154. package/lib-esm/ui/sort-dropdown/sort-dropdown.js +38 -38
  155. package/lib-esm/ui/sort-dropdown/sort-dropdown.stories.js +14 -16
  156. package/lib-esm/ui/table/table.js +26 -31
  157. package/lib-esm/ui/table/table.stories.js +84 -102
  158. package/lib-esm/ui/tabs/tabs.js +13 -21
  159. package/lib-esm/ui/tabs/tabs.stories.js +4 -6
  160. package/lib-esm/ui/toolbar/toolbar.js +7 -5
  161. package/lib-esm/ui/toolbar/toolbar.stories.js +14 -16
  162. package/lib-esm/ui/tooltip/tooltip.js +13 -16
  163. package/lib-esm/ui/tooltip/tooltip.stories.js +8 -12
  164. package/lib-esm/utils.js +20 -24
  165. package/package.json +25 -33
  166. package/src/assets/icons/arrow.svg +1 -0
  167. package/src/assets/icons/cancel.svg +1 -0
  168. package/src/assets/icons/clock.svg +1 -0
  169. package/src/assets/icons/close.svg +1 -0
  170. package/src/assets/icons/commit.svg +1 -0
  171. package/src/assets/icons/filter.svg +1 -0
  172. package/src/assets/icons/help.svg +1 -0
  173. package/src/assets/icons/menu.svg +1 -0
  174. package/src/{ui/icon/assets → assets/icons}/sort.svg +0 -0
  175. package/src/assets/icons/warning.svg +1 -0
  176. package/src/assets/icons.svg +1 -0
  177. package/src/components/bundle-assets/bundle-assets.jsx +3 -3
  178. package/src/components/bundle-assets/bundle-assets.utils.js +96 -17
  179. package/src/components/bundle-assets/index.jsx +89 -0
  180. package/src/components/bundle-modules/bundle-modules.jsx +3 -3
  181. package/src/components/bundle-modules/bundle-modules.utils.js +101 -0
  182. package/src/components/bundle-modules/index.jsx +107 -0
  183. package/src/components/bundle-packages/bundle-packages.jsx +3 -3
  184. package/src/components/bundle-packages/bundle-packages.utils.js +47 -0
  185. package/src/components/bundle-packages/index.jsx +84 -0
  186. package/src/components/metrics-table/metrics-table.jsx +2 -7
  187. package/src/components/metrics-table-search/metrics-table-search.jsx +1 -0
  188. package/src/components/metrics-table-search/metrics-table-search.module.css +2 -1
  189. package/src/hooks/rows-filter.js +16 -0
  190. package/src/hooks/rows-sort.js +24 -0
  191. package/src/hooks/search-params.js +153 -0
  192. package/src/ui/icon/icon.jsx +7 -42
  193. package/src/ui/sort-dropdown/sort-dropdown.jsx +11 -11
  194. package/src/utils.jsx +5 -3
  195. package/lib/components/bundle-assets/bundle-assets.container.js +0 -140
  196. package/lib/components/bundle-modules/bundle-modules.container.js +0 -222
  197. package/lib/hocs/with-custom-sort.js +0 -75
  198. package/lib/hocs/with-filtered-items.js +0 -54
  199. package/lib/ui/icon/assets/arrow.svg +0 -4
  200. package/lib/ui/icon/assets/branch.svg +0 -3
  201. package/lib/ui/icon/assets/cancel.svg +0 -4
  202. package/lib/ui/icon/assets/clock.svg +0 -3
  203. package/lib/ui/icon/assets/close.svg +0 -4
  204. package/lib/ui/icon/assets/commit.svg +0 -3
  205. package/lib/ui/icon/assets/filter.svg +0 -4
  206. package/lib/ui/icon/assets/help.svg +0 -4
  207. package/lib/ui/icon/assets/job.svg +0 -3
  208. package/lib/ui/icon/assets/menu.svg +0 -4
  209. package/lib/ui/icon/assets/package.svg +0 -3
  210. package/lib/ui/icon/assets/pull-request.svg +0 -3
  211. package/lib/ui/icon/assets/repository.svg +0 -3
  212. package/lib/ui/icon/assets/warning.svg +0 -4
  213. package/lib-esm/components/bundle-assets/bundle-assets.container.js +0 -119
  214. package/lib-esm/components/bundle-modules/bundle-modules.container.js +0 -175
  215. package/lib-esm/components/bundle-packages/bundle-packages.container.js +0 -91
  216. package/lib-esm/hocs/with-custom-sort.js +0 -43
  217. package/lib-esm/hocs/with-filtered-items.js +0 -35
  218. package/lib-esm/hocs/with-search.js +0 -214
  219. package/lib-esm/ui/icon/assets/arrow.svg +0 -4
  220. package/lib-esm/ui/icon/assets/branch.svg +0 -3
  221. package/lib-esm/ui/icon/assets/cancel.svg +0 -4
  222. package/lib-esm/ui/icon/assets/clock.svg +0 -3
  223. package/lib-esm/ui/icon/assets/close.svg +0 -4
  224. package/lib-esm/ui/icon/assets/commit.svg +0 -3
  225. package/lib-esm/ui/icon/assets/filter.svg +0 -4
  226. package/lib-esm/ui/icon/assets/help.svg +0 -4
  227. package/lib-esm/ui/icon/assets/job.svg +0 -3
  228. package/lib-esm/ui/icon/assets/menu.svg +0 -4
  229. package/lib-esm/ui/icon/assets/package.svg +0 -3
  230. package/lib-esm/ui/icon/assets/pull-request.svg +0 -3
  231. package/lib-esm/ui/icon/assets/repository.svg +0 -3
  232. package/lib-esm/ui/icon/assets/warning.svg +0 -4
  233. package/src/components/bundle-assets/bundle-assets.container.js +0 -146
  234. package/src/components/bundle-assets/index.js +0 -4
  235. package/src/components/bundle-modules/bundle-modules.container.js +0 -158
  236. package/src/components/bundle-modules/index.js +0 -4
  237. package/src/components/bundle-packages/bundle-packages.container.js +0 -93
  238. package/src/components/bundle-packages/index.js +0 -4
  239. package/src/hocs/with-custom-sort.jsx +0 -35
  240. package/src/hocs/with-filtered-items.jsx +0 -34
  241. package/src/hocs/with-search.jsx +0 -184
  242. package/src/ui/icon/assets/arrow.svg +0 -4
  243. package/src/ui/icon/assets/branch.svg +0 -3
  244. package/src/ui/icon/assets/cancel.svg +0 -4
  245. package/src/ui/icon/assets/clock.svg +0 -3
  246. package/src/ui/icon/assets/close.svg +0 -4
  247. package/src/ui/icon/assets/commit.svg +0 -3
  248. package/src/ui/icon/assets/filter.svg +0 -4
  249. package/src/ui/icon/assets/help.svg +0 -4
  250. package/src/ui/icon/assets/job.svg +0 -3
  251. package/src/ui/icon/assets/menu.svg +0 -4
  252. package/src/ui/icon/assets/package.svg +0 -3
  253. package/src/ui/icon/assets/pull-request.svg +0 -3
  254. package/src/ui/icon/assets/repository.svg +0 -3
  255. package/src/ui/icon/assets/warning.svg +0 -4
@@ -1,6 +1,4 @@
1
- import _sum from "lodash/fp/sum";
2
- import _map from "lodash/fp/map";
3
- import _flow from "lodash/fp/flow";
1
+ import _sum from "lodash/sum";
4
2
  import _isEmpty from "lodash/isEmpty";
5
3
  import _get from "lodash/get";
6
4
  import React, { useMemo } from 'react';
@@ -12,98 +10,95 @@ import { Metric } from '../metric';
12
10
  import { Delta } from '../delta';
13
11
  import { JobName } from '../job-name';
14
12
  import styles from './metrics-table.module.css';
15
- var METRIC_TYPE_DATA = getGlobalMetricType(null, METRIC_TYPE_FILE_SIZE);
13
+ const METRIC_TYPE_DATA = getGlobalMetricType(null, METRIC_TYPE_FILE_SIZE);
16
14
 
17
- var getRowsRunTotal = function getRowsRunTotal(rows, runIndex) {
18
- return _flow(_map(function (row) {
19
- return _get(row, "runs[" + runIndex + "].value", 0);
20
- }), _sum)(rows);
21
- };
22
-
23
- var getHeaderLabelCells = function getHeaderLabelCells(rows) {
24
- return function (run, runIndex, runs) {
25
- var isBaseline = runIndex === runs.length - 1;
26
- var className = cx(styles.value, isBaseline ? styles.baseline : styles.current);
15
+ const getRowsRunTotal = (rows, runIndex) => _sum(rows.map(row => _get(row, `runs[${runIndex}].value`, 0)));
27
16
 
28
- if (!run) {
29
- return [{
30
- children: '-',
31
- className: className
32
- }].concat(!isBaseline ? [{
33
- children: ' ',
34
- className: styles.delta
35
- }] : []);
36
- }
17
+ const getHeaderLabelCells = rows => (run, runIndex, runs) => {
18
+ const isBaseline = runIndex === runs.length - 1;
19
+ const className = cx(styles.value, isBaseline ? styles.baseline : styles.current);
37
20
 
38
- var label = run.label,
39
- internalBuildNumber = run.internalBuildNumber;
40
- var jobName = /*#__PURE__*/React.createElement(JobName, {
41
- title: runIndex === 0 ? 'Current' : 'Baseline',
42
- internalBuildNumber: internalBuildNumber,
43
- className: styles.jobName
44
- }, label);
45
- return [// Value column
46
- {
47
- children: jobName,
48
- className: className
49
- }].concat(!isBaseline ? [{
21
+ if (!run) {
22
+ return [{
23
+ children: '-',
24
+ className
25
+ }, ...(!isBaseline ? [{
50
26
  children: ' ',
51
- className: cx(styles.delta)
52
- }] : []);
53
- };
54
- };
55
-
56
- var getHeaderTotalCells = function getHeaderTotalCells(rows) {
57
- return function (run, runIndex, runs) {
58
- var isBaseline = runIndex === runs.length - 1;
59
- var className = cx(styles.value, isBaseline ? styles.baseline : styles.current);
60
- var currentRunTotal = getRowsRunTotal(rows, runIndex);
61
- var baselineRunTotal = !isBaseline && getRowsRunTotal(rows, runIndex + 1);
62
- var infoTotal = getMetricRunInfo(METRIC_TYPE_DATA, currentRunTotal, baselineRunTotal);
63
- return [// Value column
64
- {
65
- children: /*#__PURE__*/React.createElement(Metric, {
66
- className: styles.tableHeaderRunMetric,
67
- value: infoTotal.displayValue
68
- }),
69
- className: className
70
- }].concat(!isBaseline ? [{
71
- children: /*#__PURE__*/React.createElement(Delta, {
72
- displayValue: infoTotal.displayDeltaPercentage,
73
- deltaType: infoTotal.deltaType
74
- }),
75
27
  className: styles.delta
76
- }] : []);
77
- };
28
+ }] : [])];
29
+ }
30
+
31
+ const {
32
+ label,
33
+ internalBuildNumber
34
+ } = run;
35
+ const jobName = /*#__PURE__*/React.createElement(JobName, {
36
+ title: runIndex === 0 ? 'Current' : 'Baseline',
37
+ internalBuildNumber: internalBuildNumber,
38
+ className: styles.jobName
39
+ }, label);
40
+ return [// Value column
41
+ {
42
+ children: jobName,
43
+ className
44
+ }, // Delta column
45
+ ...(!isBaseline ? [{
46
+ children: ' ',
47
+ className: cx(styles.delta)
48
+ }] : [])];
78
49
  };
79
50
 
80
- var getHeaderRows = function getHeaderRows(runs, items, showHeaderSum, title) {
81
- return [{
82
- className: styles.headerRowColumns,
83
- cells: [// Metric name column - one empty strying to render the column
84
- {
85
- children: title || ' ',
86
- className: styles.metricName,
87
- rowSpan: showHeaderSum ? 2 : 1
88
- }].concat(runs.map(getHeaderLabelCells(items)).flat())
89
- }].concat(showHeaderSum ? [{
90
- className: styles.headerRowTotals,
91
- cells: runs.map(getHeaderTotalCells(items)).flat()
92
- }] : []);
51
+ const getHeaderTotalCells = rows => (run, runIndex, runs) => {
52
+ const isBaseline = runIndex === runs.length - 1;
53
+ const className = cx(styles.value, isBaseline ? styles.baseline : styles.current);
54
+ const currentRunTotal = getRowsRunTotal(rows, runIndex);
55
+ const baselineRunTotal = !isBaseline && getRowsRunTotal(rows, runIndex + 1);
56
+ const infoTotal = getMetricRunInfo(METRIC_TYPE_DATA, currentRunTotal, baselineRunTotal);
57
+ return [// Value column
58
+ {
59
+ children: /*#__PURE__*/React.createElement(Metric, {
60
+ className: styles.tableHeaderRunMetric,
61
+ value: infoTotal.displayValue
62
+ }),
63
+ className
64
+ }, // Delta column
65
+ ...(!isBaseline ? [{
66
+ children: /*#__PURE__*/React.createElement(Delta, {
67
+ displayValue: infoTotal.displayDeltaPercentage,
68
+ deltaType: infoTotal.deltaType
69
+ }),
70
+ className: styles.delta
71
+ }] : [])];
93
72
  };
94
73
 
95
- var generateRowCells = function generateRowCells(item, index, items) {
96
- var isBaseline = index === items.length - 1; // eslint-disable-next-line react/destructuring-assignment
74
+ const getHeaderRows = (runs, items, showHeaderSum, title) => [{
75
+ className: styles.headerRowColumns,
76
+ cells: [// Metric name column - one empty strying to render the column
77
+ {
78
+ children: title || ' ',
79
+ className: styles.metricName,
80
+ rowSpan: showHeaderSum ? 2 : 1
81
+ }, // Runs
82
+ ...runs.map(getHeaderLabelCells(items)).flat()]
83
+ }, ...(showHeaderSum ? [{
84
+ className: styles.headerRowTotals,
85
+ cells: runs.map(getHeaderTotalCells(items)).flat()
86
+ }] : [])];
87
+
88
+ const generateRowCells = (item, index, items) => {
89
+ const isBaseline = index === items.length - 1; // eslint-disable-next-line react/destructuring-assignment
97
90
 
98
91
  if (!item || typeof item.value === 'undefined') {
99
- return ['-'].concat(!isBaseline ? [''] : []);
92
+ return ['-', ...(!isBaseline ? [''] : [])];
100
93
  }
101
94
 
102
- var displayValue = item.displayValue,
103
- deltaPercentage = item.deltaPercentage,
104
- displayDeltaPercentage = item.displayDeltaPercentage,
105
- deltaType = item.deltaType;
106
- var cells = [/*#__PURE__*/React.createElement(Metric, {
95
+ const {
96
+ displayValue,
97
+ deltaPercentage,
98
+ displayDeltaPercentage,
99
+ deltaType
100
+ } = item;
101
+ const cells = [/*#__PURE__*/React.createElement(Metric, {
107
102
  value: displayValue
108
103
  })];
109
104
 
@@ -117,72 +112,68 @@ var generateRowCells = function generateRowCells(item, index, items) {
117
112
  return cells;
118
113
  };
119
114
 
120
- var getRows = function getRows(runs, items, renderRowHeader) {
121
- return items.map(function (item, index) {
122
- var changed = item.changed;
123
- return {
124
- key: (item == null ? void 0 : item.key) || index,
125
- className: changed ? '' : styles.unchanged,
126
- cells: [// Metric name
127
- renderRowHeader(item)].concat(item.runs.map(generateRowCells).flat())
128
- };
129
- });
130
- };
131
-
132
- export var MetricsTable = function MetricsTable(_ref) {
133
- var className = _ref.className,
134
- renderRowHeader = _ref.renderRowHeader,
135
- runs = _ref.runs,
136
- items = _ref.items,
137
- emptyMessage = _ref.emptyMessage,
138
- showHeaderSum = _ref.showHeaderSum,
139
- headerRows = _ref.headerRows,
140
- title = _ref.title;
141
-
142
- var _useMemo = useMemo(function () {
143
- var headerColumns = getHeaderRows(runs, items, showHeaderSum, title);
115
+ const getRows = (runs, items, renderRowHeader) => items.map((item, index) => {
116
+ const {
117
+ changed
118
+ } = item;
119
+ return {
120
+ key: (item == null ? void 0 : item.key) || index,
121
+ className: changed ? '' : styles.unchanged,
122
+ cells: [// Metric name
123
+ renderRowHeader(item), // Metric item values
124
+ ...item.runs.map(generateRowCells).flat()]
125
+ };
126
+ });
127
+
128
+ export const MetricsTable = _ref => {
129
+ let {
130
+ className,
131
+ renderRowHeader,
132
+ runs,
133
+ items,
134
+ emptyMessage,
135
+ showHeaderSum,
136
+ headerRows,
137
+ title
138
+ } = _ref;
139
+ const {
140
+ headers,
141
+ columnClassNames
142
+ } = useMemo(() => {
143
+ const headerColumns = getHeaderRows(runs, items, showHeaderSum, title);
144
144
  return {
145
- headers: [].concat(headerRows, headerColumns),
145
+ headers: [...headerRows, ...headerColumns],
146
146
  // First header row has the column class names
147
- columnClassNames: headerColumns[0].cells.map(function (headerColumn) {
148
- return headerColumn.className;
149
- })
147
+ columnClassNames: headerColumns[0].cells.map(headerColumn => headerColumn.className)
150
148
  };
151
- }, [headerRows, runs, items, showHeaderSum, title]),
152
- headers = _useMemo.headers,
153
- columnClassNames = _useMemo.columnClassNames;
154
-
155
- var rows = useMemo(function () {
156
- return getRows(runs, items, renderRowHeader);
157
- }, [runs, items, renderRowHeader]);
158
- var rootClassName = cx(styles.root, className, runs.length > 1 && styles.multipleRuns, showHeaderSum && styles.showHeaderSum);
149
+ }, [headerRows, runs, items, showHeaderSum, title]);
150
+ const rows = useMemo(() => getRows(runs, items, renderRowHeader), [runs, items, renderRowHeader]);
151
+ const rootClassName = cx(styles.root, className, runs.length > 1 && styles.multipleRuns, showHeaderSum && styles.showHeaderSum);
159
152
  return /*#__PURE__*/React.createElement(Table, {
160
153
  className: rootClassName,
161
154
  compact: true
162
- }, /*#__PURE__*/React.createElement(Table.THead, null, headers.map(function (headerRow) {
163
- var _ref2 = headerRow.cells ? headerRow : {
155
+ }, /*#__PURE__*/React.createElement(Table.THead, null, headers.map(headerRow => {
156
+ const {
157
+ cells,
158
+ className: rowClassName
159
+ } = headerRow.cells ? headerRow : {
164
160
  cells: headerRow
165
- },
166
- cells = _ref2.cells,
167
- rowClassName = _ref2.className;
168
-
161
+ };
169
162
  return /*#__PURE__*/React.createElement(Table.Tr, {
170
163
  className: rowClassName
171
- }, cells.map(function (header) {
172
- return /*#__PURE__*/React.createElement(Table.Th, header);
173
- }));
174
- })), /*#__PURE__*/React.createElement(Table.TBody, null, !_isEmpty(rows) ? rows.map(function (_ref3) {
175
- var key = _ref3.key,
176
- rowClassName = _ref3.className,
177
- cells = _ref3.cells;
164
+ }, cells.map(header => /*#__PURE__*/React.createElement(Table.Th, header)));
165
+ })), /*#__PURE__*/React.createElement(Table.TBody, null, !_isEmpty(rows) ? rows.map(_ref2 => {
166
+ let {
167
+ key,
168
+ className: rowClassName,
169
+ cells
170
+ } = _ref2;
178
171
  return /*#__PURE__*/React.createElement(Table.Tr, {
179
172
  key: key,
180
173
  className: rowClassName
181
- }, cells.map(function (cell, index) {
182
- return /*#__PURE__*/React.createElement(Table.Td, {
183
- className: columnClassNames[index]
184
- }, cell);
185
- }));
174
+ }, cells.map((cell, index) => /*#__PURE__*/React.createElement(Table.Td, {
175
+ className: columnClassNames[index]
176
+ }, cell)));
186
177
  }) : /*#__PURE__*/React.createElement(Table.Tr, null, /*#__PURE__*/React.createElement(Table.Td, {
187
178
  className: styles.empty,
188
179
  colSpan: (columnClassNames == null ? void 0 : columnClassNames.length) || 1
@@ -190,9 +181,7 @@ export var MetricsTable = function MetricsTable(_ref) {
190
181
  };
191
182
  MetricsTable.defaultProps = {
192
183
  className: '',
193
- renderRowHeader: function renderRowHeader(item) {
194
- return item.label;
195
- },
184
+ renderRowHeader: item => item.label,
196
185
  emptyMessage: 'No entries found.',
197
186
  showHeaderSum: false,
198
187
  headerRows: [],
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { storiesOf } from '@storybook/react';
3
3
  import { getWrapperDecorator } from '../../stories';
4
4
  import { MetricsTable } from '.';
5
- var RUNS = [{
5
+ const RUNS = [{
6
6
  internalBuildNumber: 2,
7
7
  label: 'Job #2'
8
8
  }, {
@@ -11,7 +11,7 @@ var RUNS = [{
11
11
  href: "#noop"
12
12
  }, "Job #1")
13
13
  }];
14
- var ITEMS_SINGLE_RUN = [{
14
+ const ITEMS_SINGLE_RUN = [{
15
15
  key: 'webpack.assets.totalSizeByTypeALL',
16
16
  label: 'Total Size',
17
17
  biggerIsBetter: false,
@@ -57,7 +57,7 @@ var ITEMS_SINGLE_RUN = [{
57
57
  displayValue: '80'
58
58
  }]
59
59
  }];
60
- var ITEMS_MULTIPLE_RUNS = [{
60
+ const ITEMS_MULTIPLE_RUNS = [{
61
61
  key: 'webpack.assets.totalSizeByTypeALL',
62
62
  label: 'Total Size',
63
63
  biggerIsBetter: false,
@@ -157,36 +157,28 @@ var ITEMS_MULTIPLE_RUNS = [{
157
157
  displayValue: '80'
158
158
  }]
159
159
  }];
160
- var stories = storiesOf('Components/MetricsTable', module);
160
+ const stories = storiesOf('Components/MetricsTable', module);
161
161
  stories.addDecorator(getWrapperDecorator());
162
- stories.add('default', function () {
163
- return /*#__PURE__*/React.createElement(MetricsTable, {
164
- runs: RUNS.slice(0, 1),
165
- items: ITEMS_SINGLE_RUN
166
- });
167
- });
168
- stories.add('multiple runs', function () {
169
- return /*#__PURE__*/React.createElement(MetricsTable, {
170
- runs: RUNS,
171
- items: ITEMS_MULTIPLE_RUNS
172
- });
173
- });
174
- stories.add('with header rows', function () {
175
- return /*#__PURE__*/React.createElement(MetricsTable, {
176
- runs: RUNS,
177
- items: ITEMS_MULTIPLE_RUNS,
178
- headerRows: [['Metric', {
179
- children: 'Colspan',
180
- colSpan: 1 + (RUNS.length - 1) * 2 + 1,
181
- style: {
182
- textAlign: 'center'
183
- }
184
- }]]
185
- });
186
- });
187
- stories.add('empty', function () {
188
- return /*#__PURE__*/React.createElement(MetricsTable, {
189
- runs: RUNS,
190
- items: []
191
- });
192
- });
162
+ stories.add('default', () => /*#__PURE__*/React.createElement(MetricsTable, {
163
+ runs: RUNS.slice(0, 1),
164
+ items: ITEMS_SINGLE_RUN
165
+ }));
166
+ stories.add('multiple runs', () => /*#__PURE__*/React.createElement(MetricsTable, {
167
+ runs: RUNS,
168
+ items: ITEMS_MULTIPLE_RUNS
169
+ }));
170
+ stories.add('with header rows', () => /*#__PURE__*/React.createElement(MetricsTable, {
171
+ runs: RUNS,
172
+ items: ITEMS_MULTIPLE_RUNS,
173
+ headerRows: [['Metric', {
174
+ children: 'Colspan',
175
+ colSpan: 1 + (RUNS.length - 1) * 2 + 1,
176
+ style: {
177
+ textAlign: 'center'
178
+ }
179
+ }]]
180
+ }));
181
+ stories.add('empty', () => /*#__PURE__*/React.createElement(MetricsTable, {
182
+ runs: RUNS,
183
+ items: []
184
+ }));
@@ -1,32 +1,29 @@
1
- var _excluded = ["className", "handleViewAll", "handleResetFilters"];
2
-
3
1
  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); }
4
2
 
5
- 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; }
6
-
7
3
  import React from 'react';
8
4
  import PropTypes from 'prop-types';
9
5
  import I18N from '../../i18n';
10
6
  import { Dropdown } from '../../ui/dropdown';
11
- export var MetricsTableOptions = function MetricsTableOptions(props) {
12
- var className = props.className,
13
- handleViewAll = props.handleViewAll,
14
- handleResetFilters = props.handleResetFilters,
15
- restProps = _objectWithoutPropertiesLoose(props, _excluded);
16
-
7
+ export const MetricsTableOptions = props => {
8
+ const {
9
+ className,
10
+ handleViewAll,
11
+ handleResetFilters,
12
+ ...restProps
13
+ } = props;
17
14
  return /*#__PURE__*/React.createElement(Dropdown, _extends({
18
15
  className: className,
19
16
  glyph: "menu"
20
- }, restProps), function (_ref) {
21
- var MenuItem = _ref.MenuItem,
22
- menu = _ref.menu,
23
- menuItemClassName = _ref.menuItemClassName;
17
+ }, restProps), _ref => {
18
+ let {
19
+ MenuItem,
20
+ menu,
21
+ menuItemClassName
22
+ } = _ref;
24
23
 
25
- var getButtonOnClick = function getButtonOnClick(handler) {
26
- return function () {
27
- handler();
28
- menu.toggle();
29
- };
24
+ const getButtonOnClick = handler => () => {
25
+ handler();
26
+ menu.toggle();
30
27
  };
31
28
 
32
29
  return /*#__PURE__*/React.createElement(React.Fragment, null, handleResetFilters && /*#__PURE__*/React.createElement(MenuItem, _extends({}, menu, {
@@ -2,16 +2,10 @@ import React from 'react';
2
2
  import { storiesOf } from '@storybook/react';
3
3
  import { getWrapperDecorator } from '../../stories';
4
4
  import { MetricsTableOptions } from '.';
5
- var stories = storiesOf('Components/MetricsTableOptions', module);
5
+ const stories = storiesOf('Components/MetricsTableOptions', module);
6
6
  stories.addDecorator(getWrapperDecorator());
7
- stories.add('default', function () {
8
- return /*#__PURE__*/React.createElement(MetricsTableOptions, {
9
- align: "left",
10
- handleResetFilters: function handleResetFilters() {
11
- return console.log('reset');
12
- },
13
- handleViewAll: function handleViewAll() {
14
- return console.log('view all');
15
- }
16
- });
17
- });
7
+ stories.add('default', () => /*#__PURE__*/React.createElement(MetricsTableOptions, {
8
+ align: "left",
9
+ handleResetFilters: () => console.log('reset'),
10
+ handleViewAll: () => console.log('view all')
11
+ }));
@@ -5,32 +5,30 @@ import cx from 'classnames';
5
5
  import { Icon } from '../../ui/icon';
6
6
  import { Input } from '../../ui/input';
7
7
  import css from './metrics-table-search.module.css';
8
- export var MetricsTableSearch = function MetricsTableSearch(props) {
9
- var className = props.className,
10
- placeholder = props.placeholder,
11
- search = props.search,
12
- updateSearch = props.updateSearch;
13
- var rootClassname = cx(css.root, className);
8
+ export const MetricsTableSearch = props => {
9
+ const {
10
+ className,
11
+ placeholder,
12
+ search,
13
+ updateSearch
14
+ } = props;
15
+ const rootClassname = cx(css.root, className);
16
+ const [value, setValue] = useState(search); // Update local state when initial value has changed
14
17
 
15
- var _useState = useState(search),
16
- value = _useState[0],
17
- setValue = _useState[1]; // Update local state when initial value has changed
18
-
19
-
20
- useEffect(function () {
18
+ useEffect(() => {
21
19
  setValue(search);
22
20
  }, [search]);
23
- var debouncedUpdateSearch = useCallback(_debounce(updateSearch, 500), []);
24
- var handleChangeValue = useCallback(function (event) {
25
- var newValue = event.target.value;
21
+ const debouncedUpdateSearch = useCallback(_debounce(updateSearch, 500), []);
22
+ const handleChangeValue = useCallback(event => {
23
+ const newValue = event.target.value;
26
24
  setValue(newValue); // Update parent state when the local value has changed
27
25
 
28
26
  if (newValue !== search) {
29
27
  debouncedUpdateSearch(newValue);
30
28
  }
31
29
  }, [search]);
32
- var handleClearValue = useCallback(function () {
33
- var newValue = '';
30
+ const handleClearValue = useCallback(() => {
31
+ const newValue = '';
34
32
  setValue(newValue);
35
33
  updateSearch(newValue);
36
34
  }, []);
@@ -41,7 +39,8 @@ export var MetricsTableSearch = function MetricsTableSearch(props) {
41
39
  placeholder: placeholder,
42
40
  onChange: handleChangeValue,
43
41
  value: value,
44
- size: "small"
42
+ size: "small",
43
+ autoComplete: "off"
45
44
  }), search && /*#__PURE__*/React.createElement("button", {
46
45
  className: css.cancelButton,
47
46
  type: "button",
@@ -5,6 +5,7 @@
5
5
  }
6
6
 
7
7
  .input {
8
+ height: var(--space-large);
8
9
  border-color: var(--color-outline);
9
10
  }
10
11
 
@@ -26,7 +27,7 @@
26
27
  padding: var(--space-xxsmall);
27
28
  width: var(--space-large);
28
29
  height: var(--space-large);
29
- background: radial-gradient(var(--color-background), transparent 75%);
30
+ background: radial-gradient(var(--color-background) 50%, transparent);
30
31
  color: var(--color-text-ultra-light);
31
32
  transition: var(--transition-in);
32
33
  }
@@ -2,14 +2,11 @@ import React, { useState } from 'react';
2
2
  import { storiesOf } from '@storybook/react';
3
3
  import { getWrapperDecorator } from '../../stories';
4
4
  import { MetricsTableSearch } from '.';
5
- var stories = storiesOf('Components/MetricsTableSearch', module);
5
+ const stories = storiesOf('Components/MetricsTableSearch', module);
6
6
  stories.addDecorator(getWrapperDecorator());
7
7
 
8
- var MetricsTableWithState = function MetricsTableWithState() {
9
- var _useState = useState(''),
10
- search = _useState[0],
11
- updateSearch = _useState[1];
12
-
8
+ const MetricsTableWithState = () => {
9
+ const [search, updateSearch] = useState('');
13
10
  return /*#__PURE__*/React.createElement(MetricsTableSearch, {
14
11
  placeholder: "Search name",
15
12
  search: search,
@@ -17,6 +14,4 @@ var MetricsTableWithState = function MetricsTableWithState() {
17
14
  });
18
15
  };
19
16
 
20
- stories.add('default', function () {
21
- return /*#__PURE__*/React.createElement(MetricsTableWithState, null);
22
- });
17
+ stories.add('default', () => /*#__PURE__*/React.createElement(MetricsTableWithState, null));
@@ -6,13 +6,15 @@ import { FlexStack } from '../../layout/flex-stack';
6
6
  import { Stack } from '../../layout/stack';
7
7
  import { Popover } from '../../ui/popover';
8
8
  import css from './metrics-table-title.module.css';
9
- export var MetricsTableTitle = function MetricsTableTitle(props) {
10
- var className = props.className,
11
- title = props.title,
12
- info = props.info,
13
- popoverInfo = props.popoverInfo,
14
- popoverHref = props.popoverHref;
15
- var rootClassName = cx(css.root, className);
9
+ export const MetricsTableTitle = props => {
10
+ const {
11
+ className,
12
+ title,
13
+ info,
14
+ popoverInfo,
15
+ popoverHref
16
+ } = props;
17
+ const rootClassName = cx(css.root, className);
16
18
  return /*#__PURE__*/React.createElement(Stack, {
17
19
  space: "xxxsmall",
18
20
  className: rootClassName
@@ -11,20 +11,22 @@ import { Stack } from '../../layout/stack';
11
11
  import { FileName } from '../../ui/file-name';
12
12
  import { ComponentLink } from '../component-link';
13
13
  import css from './module-info.module.css';
14
- export var ModuleInfo = function ModuleInfo(props) {
15
- var className = props.className,
16
- item = props.item,
17
- labels = props.labels,
18
- chunks = props.chunks,
19
- chunkIds = props.chunkIds,
20
- CustomComponentLink = props.customComponentLink,
21
- onClick = props.onClick;
14
+ export const ModuleInfo = props => {
15
+ const {
16
+ className,
17
+ item,
18
+ labels,
19
+ chunks,
20
+ chunkIds,
21
+ customComponentLink: CustomComponentLink,
22
+ onClick
23
+ } = props;
22
24
  return /*#__PURE__*/React.createElement(Stack, {
23
25
  space: "small",
24
26
  className: className
25
- }, item.runs.map(function (run, index) {
26
- var TitleComponent = index !== 0 ? 'h4' : 'h3';
27
- var key = "module-info-" + ((run == null ? void 0 : run.name) || index) + "-" + index;
27
+ }, item.runs.map((run, index) => {
28
+ const TitleComponent = index !== 0 ? 'h4' : 'h3';
29
+ const key = `module-info-${(run == null ? void 0 : run.name) || index}-${index}`;
28
30
  return /*#__PURE__*/React.createElement(Stack, {
29
31
  space: "xxxsmall",
30
32
  key: key
@@ -32,8 +34,8 @@ export var ModuleInfo = function ModuleInfo(props) {
32
34
  className: css.chunks
33
35
  }, /*#__PURE__*/React.createElement("strong", {
34
36
  className: css.chunksTitle
35
- }, "Chunks:"), run.chunkIds.map(function (chunkId) {
36
- var chunk = _find(chunks, {
37
+ }, "Chunks:"), run.chunkIds.map(chunkId => {
38
+ const chunk = _find(chunks, {
37
39
  id: chunkId
38
40
  });
39
41