@bundle-stats/ui 3.1.4-alpha.0 → 3.2.1-alpha.0

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 (276) hide show
  1. package/.babelrc.js +3 -3
  2. package/CHANGELOG.md +18 -1
  3. package/lib/app/app.js +2 -1
  4. package/lib/app/app.stories.js +2 -1
  5. package/lib/assets/icons/arrow.svg +1 -0
  6. package/lib/assets/icons/cancel.svg +1 -0
  7. package/lib/assets/icons/clock.svg +1 -0
  8. package/lib/assets/icons/close.svg +1 -0
  9. package/lib/assets/icons/commit.svg +1 -0
  10. package/lib/assets/icons/filter.svg +1 -0
  11. package/lib/assets/icons/help.svg +1 -0
  12. package/lib/assets/icons/menu.svg +1 -0
  13. package/lib/{ui/icon/assets → assets/icons}/sort.svg +0 -0
  14. package/lib/assets/icons/warning.svg +1 -0
  15. package/lib/assets/icons.svg +1 -0
  16. package/lib/components/bundle-assets/bundle-assets.constants.js +1 -1
  17. package/lib/components/bundle-assets/bundle-assets.js +3 -3
  18. package/lib/components/bundle-assets/bundle-assets.stories.js +19 -7
  19. package/lib/components/bundle-assets/bundle-assets.utils.js +95 -28
  20. package/lib/components/bundle-assets/index.js +115 -4
  21. package/lib/components/bundle-modules/bundle-modules.constants.js +1 -1
  22. package/lib/components/bundle-modules/bundle-modules.js +3 -3
  23. package/lib/components/bundle-modules/bundle-modules.utils.js +152 -0
  24. package/lib/components/bundle-modules/index.js +135 -4
  25. package/lib/components/bundle-packages/bundle-packages.constants.js +1 -1
  26. package/lib/components/bundle-packages/bundle-packages.js +27 -7
  27. package/lib/components/bundle-packages/bundle-packages.module.css +5 -0
  28. package/lib/components/bundle-packages/{bundle-packages.container.js → bundle-packages.utils.js} +8 -42
  29. package/lib/components/bundle-packages/index.js +111 -3
  30. package/lib/components/duplicate-packages-warning/duplicate-packages-warning.js +7 -4
  31. package/lib/components/duplicate-packages-warning/duplicate-packages-warning.stories.js +4 -3
  32. package/lib/components/index.js +18 -18
  33. package/lib/components/metrics-table/metrics-table.js +3 -7
  34. package/lib/components/metrics-table-search/metrics-table-search.js +2 -1
  35. package/lib/components/metrics-table-search/metrics-table-search.module.css +2 -1
  36. package/lib/constants.js +1 -1
  37. package/lib/hooks/rows-filter.js +28 -0
  38. package/lib/hooks/rows-sort.js +54 -0
  39. package/lib/{hocs/with-search.js → hooks/search-params.js} +15 -64
  40. package/lib/layout/index.js +8 -8
  41. package/lib/ui/icon/icon.js +4 -191
  42. package/lib/ui/logo/logo.constants.js +1 -1
  43. package/lib/ui/popover/popover.js +3 -1
  44. package/lib/ui/popover/popover.module.css +3 -3
  45. package/lib/ui/sort-dropdown/sort-dropdown.js +12 -13
  46. package/lib/ui/sort-dropdown/sort-dropdown.stories.js +2 -2
  47. package/lib/ui/tooltip/tooltip.js +2 -1
  48. package/lib-esm/app/app.js +89 -108
  49. package/lib-esm/app/app.stories.js +50 -70
  50. package/lib-esm/app/header/header.js +19 -20
  51. package/lib-esm/assets/icons/arrow.svg +1 -0
  52. package/lib-esm/assets/icons/cancel.svg +1 -0
  53. package/lib-esm/assets/icons/clock.svg +1 -0
  54. package/lib-esm/assets/icons/close.svg +1 -0
  55. package/lib-esm/assets/icons/commit.svg +1 -0
  56. package/lib-esm/assets/icons/filter.svg +1 -0
  57. package/lib-esm/assets/icons/help.svg +1 -0
  58. package/lib-esm/assets/icons/menu.svg +1 -0
  59. package/lib-esm/{ui/icon/assets → assets/icons}/sort.svg +0 -0
  60. package/lib-esm/assets/icons/warning.svg +1 -0
  61. package/lib-esm/assets/icons.svg +1 -0
  62. package/lib-esm/components/asset-info/asset-info.js +20 -18
  63. package/lib-esm/components/asset-info/asset-info.stories.js +29 -33
  64. package/lib-esm/components/browsertime-table/browsertime-table.js +6 -4
  65. package/lib-esm/components/browsertime-table/browsertime-table.stories.js +9 -13
  66. package/lib-esm/components/bundle-assets/bundle-assets.constants.js +17 -15
  67. package/lib-esm/components/bundle-assets/bundle-assets.js +148 -151
  68. package/lib-esm/components/bundle-assets/bundle-assets.stories.js +58 -63
  69. package/lib-esm/components/bundle-assets/bundle-assets.utils.js +65 -21
  70. package/lib-esm/components/bundle-assets/index.js +89 -2
  71. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +46 -51
  72. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.stories.js +9 -13
  73. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +13 -13
  74. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +13 -19
  75. package/lib-esm/components/bundle-modules/bundle-modules.constants.js +17 -15
  76. package/lib-esm/components/bundle-modules/bundle-modules.js +120 -133
  77. package/lib-esm/components/bundle-modules/bundle-modules.stories.js +46 -58
  78. package/lib-esm/components/bundle-modules/bundle-modules.utils.js +95 -0
  79. package/lib-esm/components/bundle-modules/index.js +111 -3
  80. package/lib-esm/components/bundle-packages/bundle-packages.constants.js +17 -15
  81. package/lib-esm/components/bundle-packages/bundle-packages.js +81 -77
  82. package/lib-esm/components/bundle-packages/bundle-packages.module.css +5 -0
  83. package/lib-esm/components/bundle-packages/bundle-packages.stories.js +34 -46
  84. package/lib-esm/components/bundle-packages/bundle-packages.utils.js +44 -0
  85. package/lib-esm/components/bundle-packages/index.js +87 -2
  86. package/lib-esm/components/component-link.js +9 -13
  87. package/lib-esm/components/delta/delta.js +7 -6
  88. package/lib-esm/components/delta/delta.stories.js +26 -38
  89. package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.js +15 -10
  90. package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.stories.js +20 -25
  91. package/lib-esm/components/job-header/job-header.js +14 -11
  92. package/lib-esm/components/job-header/job-header.stories.js +12 -18
  93. package/lib-esm/components/job-meta/job-meta.js +14 -18
  94. package/lib-esm/components/job-meta/job-meta.stories.js +10 -12
  95. package/lib-esm/components/job-name/job-name.js +11 -17
  96. package/lib-esm/components/job-name/job-name.stories.js +15 -23
  97. package/lib-esm/components/jobs-header/jobs-header.js +12 -12
  98. package/lib-esm/components/jobs-header/jobs-header.stories.js +80 -86
  99. package/lib-esm/components/lighthouse-table/lighthouse-table.js +6 -4
  100. package/lib-esm/components/lighthouse-table/lighthouse-table.stories.js +10 -14
  101. package/lib-esm/components/metric/metric.js +14 -19
  102. package/lib-esm/components/metric/metric.stories.js +36 -58
  103. package/lib-esm/components/metrics-table/metrics-table.js +128 -143
  104. package/lib-esm/components/metrics-table/metrics-table.stories.js +27 -35
  105. package/lib-esm/components/metrics-table-options/metrics-table-options.js +15 -20
  106. package/lib-esm/components/metrics-table-options/metrics-table-options.stories.js +6 -12
  107. package/lib-esm/components/metrics-table-search/metrics-table-search.js +17 -18
  108. package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +2 -1
  109. package/lib-esm/components/metrics-table-search/metrics-table-search.stories.js +4 -9
  110. package/lib-esm/components/metrics-table-title/metrics-table-title.js +9 -7
  111. package/lib-esm/components/module-info/module-info.js +15 -13
  112. package/lib-esm/components/module-info/module-info.stories.js +20 -22
  113. package/lib-esm/components/summary/summary.js +38 -52
  114. package/lib-esm/components/summary/summary.stories.js +28 -46
  115. package/lib-esm/components/summary-item/summary-item.js +25 -29
  116. package/lib-esm/components/summary-item/summary-item.stories.js +40 -50
  117. package/lib-esm/components/total-size-type-title/total-size-type-title.js +14 -15
  118. package/lib-esm/constants.js +25 -30
  119. package/lib-esm/hooks/rows-filter.js +19 -0
  120. package/lib-esm/hooks/rows-sort.js +21 -0
  121. package/lib-esm/hooks/search-params.js +166 -0
  122. package/lib-esm/layout/box/box.js +12 -19
  123. package/lib-esm/layout/box/box.stories.js +34 -46
  124. package/lib-esm/layout/flex-stack/flex-stack.js +9 -12
  125. package/lib-esm/layout/flex-stack/flex-stack.stories.js +39 -49
  126. package/lib-esm/layout/footer/footer.js +34 -37
  127. package/lib-esm/layout/footer/footer.stories.js +7 -11
  128. package/lib-esm/layout/header/header.js +17 -24
  129. package/lib-esm/layout/header/header.stories.js +34 -43
  130. package/lib-esm/layout/stack/stack.js +8 -6
  131. package/lib-esm/layout/stack/stack.stories.js +39 -49
  132. package/lib-esm/layout/sub-header/sub-header.js +14 -12
  133. package/lib-esm/layout/sub-header/sub-header.stories.js +57 -69
  134. package/lib-esm/prototypes/typography.stories.js +48 -58
  135. package/lib-esm/query-state.js +13 -16
  136. package/lib-esm/stories/wrapper.js +14 -26
  137. package/lib-esm/ui/alert/alert.js +6 -4
  138. package/lib-esm/ui/alert/alert.stories.js +14 -24
  139. package/lib-esm/ui/container/container.js +9 -15
  140. package/lib-esm/ui/container/container.stories.js +15 -17
  141. package/lib-esm/ui/dropdown/dropdown.js +13 -11
  142. package/lib-esm/ui/dropdown/dropdown.stories.js +19 -26
  143. package/lib-esm/ui/empty-set/empty-set.js +12 -12
  144. package/lib-esm/ui/empty-set/empty-set.stories.js +11 -19
  145. package/lib-esm/ui/file-name/file-name.js +7 -8
  146. package/lib-esm/ui/file-name/file-name.stories.js +12 -16
  147. package/lib-esm/ui/filters/filters.container.js +52 -77
  148. package/lib-esm/ui/filters/filters.js +61 -89
  149. package/lib-esm/ui/filters/filters.stories.js +81 -100
  150. package/lib-esm/ui/filters/filters.utils.js +24 -28
  151. package/lib-esm/ui/filters/index.js +1 -1
  152. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.js +67 -78
  153. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.stories.js +67 -77
  154. package/lib-esm/ui/icon/icon.js +14 -206
  155. package/lib-esm/ui/icon/icon.stories.js +16 -24
  156. package/lib-esm/ui/input/input.js +6 -10
  157. package/lib-esm/ui/input/input.stories.js +8 -12
  158. package/lib-esm/ui/loader/loader.js +7 -13
  159. package/lib-esm/ui/loader/loader.stories.js +5 -9
  160. package/lib-esm/ui/logo/logo.constants.js +6 -6
  161. package/lib-esm/ui/logo/logo.js +14 -15
  162. package/lib-esm/ui/logo/logo.stories.js +14 -28
  163. package/lib-esm/ui/panels/panels.js +14 -27
  164. package/lib-esm/ui/panels/panels.stories.js +14 -16
  165. package/lib-esm/ui/popover/popover.js +13 -10
  166. package/lib-esm/ui/popover/popover.module.css +3 -3
  167. package/lib-esm/ui/popover/popover.stories.js +7 -11
  168. package/lib-esm/ui/skeleton/skeleton.js +6 -9
  169. package/lib-esm/ui/skeleton/skeleton.stories.js +2 -4
  170. package/lib-esm/ui/sort-dropdown/sort-dropdown.js +36 -39
  171. package/lib-esm/ui/sort-dropdown/sort-dropdown.stories.js +14 -16
  172. package/lib-esm/ui/table/table.js +25 -31
  173. package/lib-esm/ui/table/table.stories.js +84 -102
  174. package/lib-esm/ui/tabs/tabs.js +14 -25
  175. package/lib-esm/ui/tabs/tabs.stories.js +4 -6
  176. package/lib-esm/ui/toolbar/toolbar.js +7 -5
  177. package/lib-esm/ui/toolbar/toolbar.stories.js +11 -16
  178. package/lib-esm/ui/tooltip/tooltip.js +15 -17
  179. package/lib-esm/ui/tooltip/tooltip.stories.js +8 -12
  180. package/lib-esm/utils.js +15 -28
  181. package/package.json +19 -27
  182. package/src/app/app.jsx +4 -1
  183. package/src/assets/icons/arrow.svg +1 -0
  184. package/src/assets/icons/cancel.svg +1 -0
  185. package/src/assets/icons/clock.svg +1 -0
  186. package/src/assets/icons/close.svg +1 -0
  187. package/src/assets/icons/commit.svg +1 -0
  188. package/src/assets/icons/filter.svg +1 -0
  189. package/src/assets/icons/help.svg +1 -0
  190. package/src/assets/icons/menu.svg +1 -0
  191. package/src/{ui/icon/assets → assets/icons}/sort.svg +0 -0
  192. package/src/assets/icons/warning.svg +1 -0
  193. package/src/assets/icons.svg +1 -0
  194. package/src/components/bundle-assets/bundle-assets.jsx +3 -3
  195. package/src/components/bundle-assets/bundle-assets.utils.js +96 -17
  196. package/src/components/bundle-assets/index.jsx +89 -0
  197. package/src/components/bundle-modules/bundle-modules.jsx +3 -3
  198. package/src/components/bundle-modules/bundle-modules.utils.js +101 -0
  199. package/src/components/bundle-modules/index.jsx +107 -0
  200. package/src/components/bundle-packages/bundle-packages.jsx +21 -8
  201. package/src/components/bundle-packages/bundle-packages.module.css +5 -0
  202. package/src/components/bundle-packages/bundle-packages.utils.js +47 -0
  203. package/src/components/bundle-packages/index.jsx +84 -0
  204. package/src/components/duplicate-packages-warning/duplicate-packages-warning.jsx +9 -2
  205. package/src/components/metrics-table/metrics-table.jsx +2 -7
  206. package/src/components/metrics-table-search/metrics-table-search.jsx +1 -0
  207. package/src/components/metrics-table-search/metrics-table-search.module.css +2 -1
  208. package/src/hooks/rows-filter.js +16 -0
  209. package/src/hooks/rows-sort.js +24 -0
  210. package/src/hooks/search-params.js +153 -0
  211. package/src/ui/icon/icon.jsx +7 -42
  212. package/src/ui/popover/popover.jsx +1 -1
  213. package/src/ui/popover/popover.module.css +3 -3
  214. package/src/ui/sort-dropdown/sort-dropdown.jsx +11 -11
  215. package/src/ui/tooltip/tooltip.jsx +1 -1
  216. package/lib/components/bundle-assets/bundle-assets.container.js +0 -140
  217. package/lib/components/bundle-modules/bundle-modules.container.js +0 -222
  218. package/lib/hocs/with-custom-sort.js +0 -75
  219. package/lib/hocs/with-filtered-items.js +0 -54
  220. package/lib/ui/icon/assets/arrow.svg +0 -4
  221. package/lib/ui/icon/assets/branch.svg +0 -3
  222. package/lib/ui/icon/assets/cancel.svg +0 -4
  223. package/lib/ui/icon/assets/clock.svg +0 -3
  224. package/lib/ui/icon/assets/close.svg +0 -4
  225. package/lib/ui/icon/assets/commit.svg +0 -3
  226. package/lib/ui/icon/assets/filter.svg +0 -4
  227. package/lib/ui/icon/assets/help.svg +0 -4
  228. package/lib/ui/icon/assets/job.svg +0 -3
  229. package/lib/ui/icon/assets/menu.svg +0 -4
  230. package/lib/ui/icon/assets/package.svg +0 -3
  231. package/lib/ui/icon/assets/pull-request.svg +0 -3
  232. package/lib/ui/icon/assets/repository.svg +0 -3
  233. package/lib/ui/icon/assets/warning.svg +0 -4
  234. package/lib-esm/components/bundle-assets/bundle-assets.container.js +0 -119
  235. package/lib-esm/components/bundle-modules/bundle-modules.container.js +0 -175
  236. package/lib-esm/components/bundle-packages/bundle-packages.container.js +0 -91
  237. package/lib-esm/hocs/with-custom-sort.js +0 -43
  238. package/lib-esm/hocs/with-filtered-items.js +0 -35
  239. package/lib-esm/hocs/with-search.js +0 -214
  240. package/lib-esm/ui/icon/assets/arrow.svg +0 -4
  241. package/lib-esm/ui/icon/assets/branch.svg +0 -3
  242. package/lib-esm/ui/icon/assets/cancel.svg +0 -4
  243. package/lib-esm/ui/icon/assets/clock.svg +0 -3
  244. package/lib-esm/ui/icon/assets/close.svg +0 -4
  245. package/lib-esm/ui/icon/assets/commit.svg +0 -3
  246. package/lib-esm/ui/icon/assets/filter.svg +0 -4
  247. package/lib-esm/ui/icon/assets/help.svg +0 -4
  248. package/lib-esm/ui/icon/assets/job.svg +0 -3
  249. package/lib-esm/ui/icon/assets/menu.svg +0 -4
  250. package/lib-esm/ui/icon/assets/package.svg +0 -3
  251. package/lib-esm/ui/icon/assets/pull-request.svg +0 -3
  252. package/lib-esm/ui/icon/assets/repository.svg +0 -3
  253. package/lib-esm/ui/icon/assets/warning.svg +0 -4
  254. package/src/components/bundle-assets/bundle-assets.container.js +0 -146
  255. package/src/components/bundle-assets/index.js +0 -4
  256. package/src/components/bundle-modules/bundle-modules.container.js +0 -158
  257. package/src/components/bundle-modules/index.js +0 -4
  258. package/src/components/bundle-packages/bundle-packages.container.js +0 -93
  259. package/src/components/bundle-packages/index.js +0 -4
  260. package/src/hocs/with-custom-sort.jsx +0 -35
  261. package/src/hocs/with-filtered-items.jsx +0 -34
  262. package/src/hocs/with-search.jsx +0 -184
  263. package/src/ui/icon/assets/arrow.svg +0 -4
  264. package/src/ui/icon/assets/branch.svg +0 -3
  265. package/src/ui/icon/assets/cancel.svg +0 -4
  266. package/src/ui/icon/assets/clock.svg +0 -3
  267. package/src/ui/icon/assets/close.svg +0 -4
  268. package/src/ui/icon/assets/commit.svg +0 -3
  269. package/src/ui/icon/assets/filter.svg +0 -4
  270. package/src/ui/icon/assets/help.svg +0 -4
  271. package/src/ui/icon/assets/job.svg +0 -3
  272. package/src/ui/icon/assets/menu.svg +0 -4
  273. package/src/ui/icon/assets/package.svg +0 -3
  274. package/src/ui/icon/assets/pull-request.svg +0 -3
  275. package/src/ui/icon/assets/repository.svg +0 -3
  276. package/src/ui/icon/assets/warning.svg +0 -4
@@ -3,23 +3,20 @@ import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import styles from './metric.module.css'; // Separate value and unit
5
5
 
6
- var EXTRACT_VALUE_UNIT_PATTERN = /([\d|.|,| ]*)(\w*|%)$/;
7
- export var Metric = function Metric(_ref) {
8
- var className = _ref.className,
9
- value = _ref.value,
10
- formatter = _ref.formatter,
11
- inline = _ref.inline,
12
- anchored = _ref.anchored,
13
- children = _ref.children,
14
- enhanced = _ref.enhanced;
15
- var formattedValue = formatter(value); // eslint-disable-next-line no-unused-vars
6
+ const EXTRACT_VALUE_UNIT_PATTERN = /([\d|.|,| ]*)(\w*|%)$/;
7
+ export const Metric = ({
8
+ className,
9
+ value,
10
+ formatter,
11
+ inline,
12
+ anchored,
13
+ children,
14
+ enhanced
15
+ }) => {
16
+ const formattedValue = formatter(value); // eslint-disable-next-line no-unused-vars
16
17
 
17
- var _ref2 = enhanced && formattedValue ? formattedValue.match(EXTRACT_VALUE_UNIT_PATTERN) : [null, formattedValue, null],
18
- matched = _ref2[0],
19
- displayValue = _ref2[1],
20
- displayUnit = _ref2[2];
21
-
22
- var rootClassName = cx(className, styles.root, inline && styles.inline, anchored && styles.anchored);
18
+ const [matched, displayValue, displayUnit] = enhanced && formattedValue ? formattedValue.match(EXTRACT_VALUE_UNIT_PATTERN) : [null, formattedValue, null];
19
+ const rootClassName = cx(className, styles.root, inline && styles.inline, anchored && styles.anchored);
23
20
  return /*#__PURE__*/React.createElement("span", {
24
21
  className: rootClassName
25
22
  }, /*#__PURE__*/React.createElement("span", {
@@ -39,9 +36,7 @@ Metric.defaultProps = {
39
36
  inline: false,
40
37
  value: 0,
41
38
  children: [],
42
- formatter: function formatter(val) {
43
- return val;
44
- }
39
+ formatter: val => val
45
40
  };
46
41
  Metric.propTypes = {
47
42
  className: PropTypes.string,
@@ -3,64 +3,42 @@ import { storiesOf } from '@storybook/react';
3
3
  import { getWrapperDecorator } from '../../stories';
4
4
  import { Delta } from '../delta';
5
5
  import { Metric } from '.';
6
- var stories = storiesOf('Components/Metric', module);
6
+ const stories = storiesOf('Components/Metric', module);
7
7
  stories.addDecorator(getWrapperDecorator({
8
8
  maxWidth: '200px'
9
9
  }));
10
- stories.add('default', function () {
11
- return /*#__PURE__*/React.createElement(Metric, {
12
- value: 100,
13
- formatter: function formatter(v) {
14
- return v + "ms";
15
- }
16
- });
17
- });
18
- stories.add('modifier: formatted value', function () {
19
- return /*#__PURE__*/React.createElement(Metric, {
20
- value: "100KB"
21
- });
22
- });
23
- stories.add('modifier: enhanced', function () {
24
- return /*#__PURE__*/React.createElement(Metric, {
25
- value: 100,
26
- formatter: function formatter(v) {
27
- return v + "ms";
28
- },
29
- enhanced: true
30
- });
31
- });
32
- stories.add('modifier: delta', function () {
33
- return /*#__PURE__*/React.createElement(Metric, {
34
- value: 100,
35
- formatter: function formatter(v) {
36
- return v + "ms";
37
- }
38
- }, /*#__PURE__*/React.createElement(Delta, {
39
- displayValue: "+10%",
40
- deltaType: "POSITIVE"
41
- }));
42
- });
43
- stories.add('modifier: inline', function () {
44
- return /*#__PURE__*/React.createElement(Metric, {
45
- value: 100,
46
- formatter: function formatter(v) {
47
- return v + "ms";
48
- },
49
- inline: true
50
- }, /*#__PURE__*/React.createElement(Delta, {
51
- displayValue: "+10%",
52
- deltaType: "POSITIVE"
53
- }));
54
- });
55
- stories.add('modifier: anchored', function () {
56
- return /*#__PURE__*/React.createElement(Metric, {
57
- value: 100,
58
- formatter: function formatter(v) {
59
- return v + "ms";
60
- },
61
- anchored: true
62
- }, /*#__PURE__*/React.createElement(Delta, {
63
- displayValue: "+10%",
64
- deltaType: "POSITIVE"
65
- }));
66
- });
10
+ stories.add('default', () => /*#__PURE__*/React.createElement(Metric, {
11
+ value: 100,
12
+ formatter: v => `${v}ms`
13
+ }));
14
+ stories.add('modifier: formatted value', () => /*#__PURE__*/React.createElement(Metric, {
15
+ value: "100KB"
16
+ }));
17
+ stories.add('modifier: enhanced', () => /*#__PURE__*/React.createElement(Metric, {
18
+ value: 100,
19
+ formatter: v => `${v}ms`,
20
+ enhanced: true
21
+ }));
22
+ stories.add('modifier: delta', () => /*#__PURE__*/React.createElement(Metric, {
23
+ value: 100,
24
+ formatter: v => `${v}ms`
25
+ }, /*#__PURE__*/React.createElement(Delta, {
26
+ displayValue: "+10%",
27
+ deltaType: "POSITIVE"
28
+ })));
29
+ stories.add('modifier: inline', () => /*#__PURE__*/React.createElement(Metric, {
30
+ value: 100,
31
+ formatter: v => `${v}ms`,
32
+ inline: true
33
+ }, /*#__PURE__*/React.createElement(Delta, {
34
+ displayValue: "+10%",
35
+ deltaType: "POSITIVE"
36
+ })));
37
+ stories.add('modifier: anchored', () => /*#__PURE__*/React.createElement(Metric, {
38
+ value: 100,
39
+ formatter: v => `${v}ms`,
40
+ anchored: true
41
+ }, /*#__PURE__*/React.createElement(Delta, {
42
+ displayValue: "+10%",
43
+ deltaType: "POSITIVE"
44
+ })));
@@ -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,82 +112,72 @@ 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 = ({
129
+ className,
130
+ renderRowHeader,
131
+ runs,
132
+ items,
133
+ emptyMessage,
134
+ showHeaderSum,
135
+ headerRows,
136
+ title
137
+ }) => {
138
+ const {
139
+ headers,
140
+ columnClassNames
141
+ } = useMemo(() => {
142
+ const headerColumns = getHeaderRows(runs, items, showHeaderSum, title);
144
143
  return {
145
- headers: [].concat(headerRows, headerColumns),
144
+ headers: [...headerRows, ...headerColumns],
146
145
  // First header row has the column class names
147
- columnClassNames: headerColumns[0].cells.map(function (headerColumn) {
148
- return headerColumn.className;
149
- })
146
+ columnClassNames: headerColumns[0].cells.map(headerColumn => headerColumn.className)
150
147
  };
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);
148
+ }, [headerRows, runs, items, showHeaderSum, title]);
149
+ const rows = useMemo(() => getRows(runs, items, renderRowHeader), [runs, items, renderRowHeader]);
150
+ const rootClassName = cx(styles.root, className, runs.length > 1 && styles.multipleRuns, showHeaderSum && styles.showHeaderSum);
159
151
  return /*#__PURE__*/React.createElement(Table, {
160
152
  className: rootClassName,
161
153
  compact: true
162
- }, /*#__PURE__*/React.createElement(Table.THead, null, headers.map(function (headerRow) {
163
- var _ref2 = headerRow.cells ? headerRow : {
164
- cells: headerRow
165
- },
166
- cells = _ref2.cells,
167
- rowClassName = _ref2.className;
168
-
169
- return /*#__PURE__*/React.createElement(Table.Tr, {
154
+ }, /*#__PURE__*/React.createElement(Table.THead, null, headers.map(headerRow => {
155
+ const {
156
+ cells,
170
157
  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;
158
+ } = headerRow.cells ? headerRow : {
159
+ cells: headerRow
160
+ };
178
161
  return /*#__PURE__*/React.createElement(Table.Tr, {
179
- key: key,
180
162
  className: rowClassName
181
- }, cells.map(function (cell, index) {
182
- return /*#__PURE__*/React.createElement(Table.Td, {
183
- className: columnClassNames[index]
184
- }, cell);
185
- }));
186
- }) : /*#__PURE__*/React.createElement(Table.Tr, null, /*#__PURE__*/React.createElement(Table.Td, {
163
+ }, cells.map(header => /*#__PURE__*/React.createElement(Table.Th, header)));
164
+ })), /*#__PURE__*/React.createElement(Table.TBody, null, !_isEmpty(rows) ? rows.map(({
165
+ key,
166
+ className: rowClassName,
167
+ cells
168
+ }) => /*#__PURE__*/React.createElement(Table.Tr, {
169
+ key: key,
170
+ className: rowClassName
171
+ }, cells.map((cell, index) => /*#__PURE__*/React.createElement(Table.Td, {
172
+ className: columnClassNames[index]
173
+ }, cell)))) : /*#__PURE__*/React.createElement(Table.Tr, null, /*#__PURE__*/React.createElement(Table.Td, {
187
174
  className: styles.empty,
188
175
  colSpan: (columnClassNames == null ? void 0 : columnClassNames.length) || 1
189
176
  }, emptyMessage))));
190
177
  };
191
178
  MetricsTable.defaultProps = {
192
179
  className: '',
193
- renderRowHeader: function renderRowHeader(item) {
194
- return item.label;
195
- },
180
+ renderRowHeader: item => item.label,
196
181
  emptyMessage: 'No entries found.',
197
182
  showHeaderSum: false,
198
183
  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,27 @@
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;
24
-
25
- var getButtonOnClick = function getButtonOnClick(handler) {
26
- return function () {
27
- handler();
28
- menu.toggle();
29
- };
17
+ }, restProps), ({
18
+ MenuItem,
19
+ menu,
20
+ menuItemClassName
21
+ }) => {
22
+ const getButtonOnClick = handler => () => {
23
+ handler();
24
+ menu.toggle();
30
25
  };
31
26
 
32
27
  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
+ }));