@bundle-stats/ui 3.2.7-beta.3 → 3.2.9-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 (64) hide show
  1. package/CHANGELOG.md +32 -3
  2. package/lib/app/app.js +124 -79
  3. package/lib/app/app.module.css +3 -3
  4. package/lib/components/asset-info/asset-info.module.css +1 -0
  5. package/lib/components/bundle-assets/bundle-assets.js +97 -57
  6. package/lib/components/bundle-assets/bundle-assets.module.css +19 -13
  7. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +13 -3
  8. package/lib/components/bundle-modules/bundle-modules.js +49 -64
  9. package/lib/components/bundle-packages/bundle-packages.js +94 -46
  10. package/lib/components/bundle-packages/bundle-packages.module.css +14 -14
  11. package/lib/components/metrics-table/metrics-table.js +72 -59
  12. package/lib/components/metrics-table/metrics-table.module.css +18 -7
  13. package/lib/components/module-info/module-info.js +2 -2
  14. package/lib/hooks/search-params.js +25 -25
  15. package/lib/ui/empty-set/empty-set.js +5 -4
  16. package/lib/ui/empty-set/empty-set.module.css +2 -2
  17. package/lib/ui/hover-card/hover-card.js +7 -15
  18. package/lib/ui/hover-card/hover-card.module.css +7 -30
  19. package/lib/ui/table/table.js +5 -74
  20. package/lib/ui/table/table.module.css +23 -19
  21. package/lib/ui/table/table.stories.js +1 -1
  22. package/lib/ui/tooltip/tooltip.module.css +1 -0
  23. package/lib-esm/app/app.js +118 -76
  24. package/lib-esm/app/app.module.css +3 -3
  25. package/lib-esm/components/asset-info/asset-info.module.css +1 -0
  26. package/lib-esm/components/bundle-assets/bundle-assets.js +91 -61
  27. package/lib-esm/components/bundle-assets/bundle-assets.module.css +19 -13
  28. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +6 -3
  29. package/lib-esm/components/bundle-modules/bundle-modules.js +31 -47
  30. package/lib-esm/components/bundle-packages/bundle-packages.js +83 -43
  31. package/lib-esm/components/bundle-packages/bundle-packages.module.css +14 -14
  32. package/lib-esm/components/metrics-table/metrics-table.js +61 -53
  33. package/lib-esm/components/metrics-table/metrics-table.module.css +18 -7
  34. package/lib-esm/components/module-info/module-info.js +2 -2
  35. package/lib-esm/hooks/search-params.js +21 -22
  36. package/lib-esm/ui/empty-set/empty-set.js +4 -4
  37. package/lib-esm/ui/empty-set/empty-set.module.css +2 -2
  38. package/lib-esm/ui/hover-card/hover-card.js +7 -14
  39. package/lib-esm/ui/hover-card/hover-card.module.css +7 -30
  40. package/lib-esm/ui/table/table.js +5 -65
  41. package/lib-esm/ui/table/table.module.css +23 -19
  42. package/lib-esm/ui/table/table.stories.js +1 -1
  43. package/lib-esm/ui/tooltip/tooltip.module.css +1 -0
  44. package/package.json +3 -3
  45. package/src/app/app.jsx +135 -133
  46. package/src/app/app.module.css +3 -3
  47. package/src/components/asset-info/asset-info.module.css +1 -0
  48. package/src/components/bundle-assets/bundle-assets.jsx +94 -59
  49. package/src/components/bundle-assets/bundle-assets.module.css +19 -13
  50. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.jsx +2 -0
  51. package/src/components/bundle-modules/bundle-modules.jsx +28 -38
  52. package/src/components/bundle-packages/bundle-packages.jsx +80 -43
  53. package/src/components/bundle-packages/bundle-packages.module.css +14 -14
  54. package/src/components/metrics-table/metrics-table.jsx +53 -44
  55. package/src/components/metrics-table/metrics-table.module.css +18 -7
  56. package/src/components/module-info/module-info.jsx +2 -2
  57. package/src/hooks/search-params.js +24 -22
  58. package/src/ui/empty-set/empty-set.jsx +25 -21
  59. package/src/ui/empty-set/empty-set.module.css +2 -2
  60. package/src/ui/hover-card/hover-card.jsx +5 -19
  61. package/src/ui/hover-card/hover-card.module.css +7 -30
  62. package/src/ui/table/table.jsx +5 -52
  63. package/src/ui/table/table.module.css +23 -19
  64. package/src/ui/tooltip/tooltip.module.css +1 -0
@@ -1,6 +1,6 @@
1
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); }
2
2
 
3
- import React, { useEffect } from 'react';
3
+ import React, { useContext, useEffect, useMemo } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import { HashRouter, NavLink, Route, Switch, useLocation } from 'react-router-dom';
6
6
  import { COMPONENT } from '@bundle-stats/utils';
@@ -59,17 +59,121 @@ Layout.defaultProps = {
59
59
  jobs: null,
60
60
  version: null
61
61
  };
62
+ const JobsContext = /*#__PURE__*/React.createContext({
63
+ jobs: []
64
+ });
62
65
 
63
- const AppComponent = _ref2 => {
66
+ const JobsProvider = _ref2 => {
64
67
  let {
65
- version,
66
- jobs
68
+ jobs,
69
+ ...restProps
67
70
  } = _ref2;
71
+ const value = useMemo(() => ({
72
+ jobs
73
+ }), [jobs]);
74
+ return /*#__PURE__*/React.createElement(JobsContext.Provider, _extends({
75
+ value: value
76
+ }, restProps));
77
+ };
78
+
79
+ JobsProvider.propTypes = {
80
+ jobs: PropTypes.arrayOf(PropTypes.object).isRequired
81
+ };
82
+
83
+ const OverviewContent = () => {
84
+ const {
85
+ jobs
86
+ } = useContext(JobsContext);
87
+ const {
88
+ duplicatePackagesCount
89
+ } = jobs[0].summary.webpack;
90
+ const duplicatePackagesInsights = Boolean(duplicatePackagesCount.current || duplicatePackagesCount.baseline);
91
+ return /*#__PURE__*/React.createElement(Stack, {
92
+ space: "medium"
93
+ }, duplicatePackagesInsights && /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(DuplicatePackagesWarning, {
94
+ duplicatePackagesCount: duplicatePackagesCount,
95
+ showDelta: jobs.length > 1
96
+ })), /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
97
+ space: "small"
98
+ }, /*#__PURE__*/React.createElement(TotalSizeTypeTitle, null), /*#__PURE__*/React.createElement(BundleAssetsTotalsChartBars, {
99
+ jobs: jobs
100
+ }), /*#__PURE__*/React.createElement(BundleAssetsTotalsTable, {
101
+ jobs: jobs,
102
+ outline: true
103
+ }))));
104
+ };
105
+
106
+ const AssetsContent = () => {
107
+ var _jobs$;
108
+
68
109
  const [bundleStatsState, bundleStatsSetState] = useComponentQueryState(COMPONENT.BUNDLE_ASSETS);
69
- const [bundlePackagesState, bundlePackagesSetState] = useComponentQueryState(COMPONENT.BUNDLE_PACKAGES);
110
+ const {
111
+ jobs
112
+ } = useContext(JobsContext);
113
+ return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
114
+ space: "medium"
115
+ }, /*#__PURE__*/React.createElement(Summary, {
116
+ keys: METRICS_WEBPACK_ASSETS,
117
+ data: jobs == null ? void 0 : (_jobs$ = jobs[0]) == null ? void 0 : _jobs$.summary,
118
+ showSummaryItemDelta: (jobs == null ? void 0 : jobs.length) !== 1
119
+ }), /*#__PURE__*/React.createElement(Box, {
120
+ outline: true
121
+ }, /*#__PURE__*/React.createElement(BundleAssets, _extends({
122
+ jobs: jobs,
123
+ setState: bundleStatsSetState
124
+ }, bundleStatsState)))));
125
+ };
126
+
127
+ const ModulesContent = () => {
128
+ var _jobs$2;
129
+
70
130
  const [bundleModulesState, bundleModulesSetState] = useComponentQueryState(COMPONENT.BUNDLE_MODULES);
131
+ const {
132
+ jobs
133
+ } = useContext(JobsContext);
134
+ return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
135
+ space: "medium"
136
+ }, /*#__PURE__*/React.createElement(Summary, {
137
+ keys: METRICS_WEBPACK_MODULES,
138
+ data: jobs == null ? void 0 : (_jobs$2 = jobs[0]) == null ? void 0 : _jobs$2.summary,
139
+ showSummaryItemDelta: (jobs == null ? void 0 : jobs.length) !== 1
140
+ }), /*#__PURE__*/React.createElement(Box, {
141
+ outline: true
142
+ }, /*#__PURE__*/React.createElement(BundleModules, _extends({
143
+ jobs: jobs,
144
+ setState: bundleModulesSetState
145
+ }, bundleModulesState)))));
146
+ };
71
147
 
72
- if (jobs.length === 0) {
148
+ const PackagesContent = () => {
149
+ var _jobs$3;
150
+
151
+ const [bundlePackagesState, bundlePackagesSetState] = useComponentQueryState(COMPONENT.BUNDLE_PACKAGES);
152
+ const {
153
+ jobs
154
+ } = useContext(JobsContext);
155
+ return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
156
+ space: "medium"
157
+ }, /*#__PURE__*/React.createElement(Summary, {
158
+ keys: METRICS_WEBPACK_PACKAGES,
159
+ data: jobs == null ? void 0 : (_jobs$3 = jobs[0]) == null ? void 0 : _jobs$3.summary,
160
+ showSummaryItemDelta: (jobs == null ? void 0 : jobs.length) !== 1
161
+ }), /*#__PURE__*/React.createElement(Box, {
162
+ outline: true
163
+ }, /*#__PURE__*/React.createElement(BundlePackages, _extends({
164
+ jobs: jobs
165
+ }, bundlePackagesState, {
166
+ setState: bundlePackagesSetState
167
+ })))));
168
+ };
169
+
170
+ const AppComponent = _ref3 => {
171
+ let {
172
+ version,
173
+ jobs
174
+ } = _ref3;
175
+
176
+ if ((jobs == null ? void 0 : jobs.length) === 0) {
73
177
  return /*#__PURE__*/React.createElement(Layout, {
74
178
  version: version
75
179
  }, /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement("div", {
@@ -77,11 +181,9 @@ const AppComponent = _ref2 => {
77
181
  }, I18N.NO_DATA)));
78
182
  }
79
183
 
80
- const {
81
- duplicatePackagesCount
82
- } = jobs[0].summary.webpack;
83
- const duplicatePackagesInsights = Boolean(duplicatePackagesCount.current || duplicatePackagesCount.baseline);
84
- return /*#__PURE__*/React.createElement(Layout, {
184
+ return /*#__PURE__*/React.createElement(JobsProvider, {
185
+ jobs: jobs
186
+ }, /*#__PURE__*/React.createElement(Layout, {
85
187
  jobs: jobs,
86
188
  version: version
87
189
  }, /*#__PURE__*/React.createElement(Container, {
@@ -116,80 +218,20 @@ const AppComponent = _ref2 => {
116
218
  }, /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {
117
219
  exact: true,
118
220
  path: URLS.ASSETS,
119
- render: _ref3 => {
120
- let {
121
- location
122
- } = _ref3;
123
- return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
124
- space: "medium"
125
- }, /*#__PURE__*/React.createElement(Summary, {
126
- keys: METRICS_WEBPACK_ASSETS,
127
- data: jobs[0].summary,
128
- showSummaryItemDelta: jobs.length !== 1
129
- }), /*#__PURE__*/React.createElement(Box, {
130
- outline: true
131
- }, /*#__PURE__*/React.createElement(BundleAssets, _extends({
132
- jobs: jobs,
133
- setState: bundleStatsSetState
134
- }, bundleStatsState, {
135
- key: `${location.pathname}_${location.search}`
136
- })))));
137
- }
221
+ component: AssetsContent
138
222
  }), /*#__PURE__*/React.createElement(Route, {
139
223
  exact: true,
140
224
  path: URLS.MODULES,
141
- render: () => /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
142
- space: "medium"
143
- }, /*#__PURE__*/React.createElement(Summary, {
144
- keys: METRICS_WEBPACK_MODULES,
145
- data: jobs[0].summary,
146
- showSummaryItemDelta: jobs.length !== 1
147
- }), /*#__PURE__*/React.createElement(Box, {
148
- outline: true
149
- }, /*#__PURE__*/React.createElement(BundleModules, _extends({
150
- jobs: jobs,
151
- setState: bundleModulesSetState
152
- }, bundleModulesState)))))
225
+ component: ModulesContent
153
226
  }), /*#__PURE__*/React.createElement(Route, {
154
227
  exact: true,
155
228
  path: URLS.PACKAGES,
156
- render: _ref4 => {
157
- let {
158
- location
159
- } = _ref4;
160
- return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
161
- space: "medium"
162
- }, /*#__PURE__*/React.createElement(Summary, {
163
- keys: METRICS_WEBPACK_PACKAGES,
164
- data: jobs[0].summary,
165
- showSummaryItemDelta: jobs.length !== 1
166
- }), /*#__PURE__*/React.createElement(Box, {
167
- outline: true
168
- }, /*#__PURE__*/React.createElement(BundlePackages, _extends({
169
- jobs: jobs
170
- }, bundlePackagesState, {
171
- setState: bundlePackagesSetState,
172
- key: `${location.pathname}_${location.search}`
173
- })))));
174
- }
229
+ component: PackagesContent
175
230
  }), /*#__PURE__*/React.createElement(Route, {
176
231
  exact: true,
177
232
  path: URLS.OVERVIEW,
178
- render: () => /*#__PURE__*/React.createElement(Stack, {
179
- space: "large"
180
- }, duplicatePackagesInsights && /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(DuplicatePackagesWarning, {
181
- duplicatePackagesCount: duplicatePackagesCount,
182
- showDelta: jobs.length > 1
183
- })), /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
184
- space: "small"
185
- }, /*#__PURE__*/React.createElement(TotalSizeTypeTitle, null), /*#__PURE__*/React.createElement(BundleAssetsTotalsChartBars, {
186
- jobs: jobs
187
- }), /*#__PURE__*/React.createElement(Box, {
188
- outline: true
189
- }, /*#__PURE__*/React.createElement(BundleAssetsTotalsTable, {
190
- jobs: jobs
191
- })))))
192
- }))));
233
+ component: OverviewContent
234
+ })))));
193
235
  };
194
236
 
195
237
  AppComponent.defaultProps = {
@@ -13,7 +13,7 @@
13
13
  }
14
14
 
15
15
  .summaryContainer {
16
- padding-top: var(--space-large);
16
+ padding-top: var(--space-medium);
17
17
  padding-bottom: var(--space-small);
18
18
  }
19
19
 
@@ -35,8 +35,8 @@
35
35
  }
36
36
 
37
37
  .tabsContent {
38
- padding-top: var(--space-large);
39
- padding-bottom: var(--space-large);
38
+ padding-top: var(--space-medium);
39
+ padding-bottom: var(--space-medium);
40
40
  min-height: 480px;
41
41
  }
42
42
 
@@ -1,4 +1,5 @@
1
1
  .fileName {
2
+ max-width: 100%;
2
3
  padding: 2px;
3
4
  background: var(--color-highlight-warning);
4
5
  }
@@ -3,7 +3,7 @@ import _get from "lodash/get";
3
3
 
4
4
  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); }
5
5
 
6
- import React, { useMemo } from 'react';
6
+ import React, { useCallback, useMemo, useState } from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import cx from 'classnames';
9
9
  import { ASSET_ENTRY_TYPE, ASSET_FILE_TYPE, ASSET_FILTERS, FILE_TYPE_LABELS } from '@bundle-stats/utils';
@@ -72,66 +72,92 @@ TooltipNotPredictive.propTypes = {
72
72
 
73
73
  };
74
74
 
75
- const getRenderRowHeader = _ref4 => {
75
+ const RowHeader = _ref4 => {
76
76
  let {
77
+ row,
77
78
  labels,
78
- CustomComponentLink,
79
- chunks
79
+ chunks,
80
+ CustomComponentLink
80
81
  } = _ref4;
81
- return item => {
82
- const {
83
- label,
84
- isNotPredictive,
85
- runs,
86
- isChunk,
87
- isEntry,
88
- isInitial
89
- } = item;
90
- return /*#__PURE__*/React.createElement(HoverCard, {
91
- label: /*#__PURE__*/React.createElement(FlexStack, {
92
- space: "xxxsmall",
93
- className: css.assetName
94
- }, /*#__PURE__*/React.createElement("div", {
95
- className: css.assetInfoFlags
96
- }, isNotPredictive && /*#__PURE__*/React.createElement(Tooltip, {
97
- className: css.notPredictive,
98
- title: /*#__PURE__*/React.createElement(TooltipNotPredictive, {
99
- runs: runs
100
- })
101
- }, /*#__PURE__*/React.createElement(Icon, {
102
- className: css.notPredictiveIcon,
103
- glyph: "warning"
104
- })), isChunk && /*#__PURE__*/React.createElement(Tag, {
105
- title: "Chunk",
106
- size: Tag.SIZES.SMALL,
107
- kind: Tag.KINDS.INFO,
108
- className: cx(css.tag, css.tagChunk)
109
- }), isEntry && /*#__PURE__*/React.createElement(Tag, {
110
- title: "Entrypoint",
111
- size: Tag.SIZES.SMALL,
112
- kind: Tag.KINDS.INFO,
113
- className: cx(css.tag, css.tagEntry)
114
- }), isInitial && /*#__PURE__*/React.createElement(Tag, {
115
- title: "Initial",
116
- size: Tag.SIZES.SMALL,
117
- kind: Tag.KINDS.INFO,
118
- className: cx(css.tag, css.tagInitial)
119
- })), /*#__PURE__*/React.createElement(FileName, {
120
- name: label
121
- }))
122
- }, /*#__PURE__*/React.createElement(AssetInfo, {
123
- className: css.assetInfo,
124
- item: item,
125
- labels: labels,
126
- chunks: chunks,
127
- CustomComponentLink: CustomComponentLink
128
- }));
129
- };
82
+ const {
83
+ label,
84
+ isNotPredictive,
85
+ runs,
86
+ isChunk,
87
+ isEntry,
88
+ isInitial
89
+ } = row;
90
+ const [showHoverCard, setHoverCard] = useState(false);
91
+ const handleOnMouseEnter = useCallback(() => setHoverCard(true), [showHoverCard]);
92
+ const content = useMemo(() => /*#__PURE__*/React.createElement("span", {
93
+ className: css.assetName
94
+ }, /*#__PURE__*/React.createElement("span", {
95
+ className: css.assetNameTags
96
+ }, isNotPredictive && /*#__PURE__*/React.createElement(Tooltip, {
97
+ className: css.notPredictive,
98
+ title: /*#__PURE__*/React.createElement(TooltipNotPredictive, {
99
+ runs: runs
100
+ })
101
+ }, /*#__PURE__*/React.createElement(Icon, {
102
+ className: css.notPredictiveIcon,
103
+ glyph: "warning"
104
+ })), isChunk && /*#__PURE__*/React.createElement(Tag, {
105
+ className: cx(css.assetNameTag, css.assetNameTagChunk),
106
+ title: "Chunk",
107
+ size: Tag.SIZES.SMALL,
108
+ kind: Tag.KINDS.INFO
109
+ }), isEntry && /*#__PURE__*/React.createElement(Tag, {
110
+ className: cx(css.assetNameTag, css.assetNameTagEntry),
111
+ title: "Entrypoint",
112
+ size: Tag.SIZES.SMALL,
113
+ kind: Tag.KINDS.INFO
114
+ }), isInitial && /*#__PURE__*/React.createElement(Tag, {
115
+ className: cx(css.assetNameTag, css.assetNameTagInitial),
116
+ title: "Initial",
117
+ size: Tag.SIZES.SMALL,
118
+ kind: Tag.KINDS.INFO
119
+ })), /*#__PURE__*/React.createElement(FileName, {
120
+ className: css.assetNameText,
121
+ name: label
122
+ })), [isChunk, isEntry, isInitial, isNotPredictive, runs]);
123
+
124
+ if (!showHoverCard) {
125
+ return /*#__PURE__*/React.createElement("span", {
126
+ onMouseEnter: handleOnMouseEnter
127
+ }, content);
128
+ }
129
+
130
+ return /*#__PURE__*/React.createElement(HoverCard, {
131
+ label: content
132
+ }, /*#__PURE__*/React.createElement(AssetInfo, {
133
+ className: css.assetInfo,
134
+ item: row,
135
+ labels: labels,
136
+ chunks: chunks,
137
+ CustomComponentLink: CustomComponentLink
138
+ }));
130
139
  };
131
140
 
141
+ RowHeader.propTypes = {
142
+ row: PropTypes.shape({
143
+ label: PropTypes.string,
144
+ isNotPredictive: PropTypes.bool,
145
+ isChunk: PropTypes.bool,
146
+ isInitial: PropTypes.bool,
147
+ isEntry: PropTypes.bool,
148
+ runs: PropTypes.arrayOf(PropTypes.object)
149
+ }).isRequired,
150
+ chunks: PropTypes.arrayOf(PropTypes.shape({
151
+ id: PropTypes.string,
152
+ name: PropTypes.string
153
+ })),
154
+ labels: PropTypes.arrayOf(PropTypes.string).isRequired,
155
+ CustomComponentLink: PropTypes.elementType.isRequired
156
+ };
157
+ RowHeader.defaultProps = {
158
+ chunks: []
159
+ };
132
160
  export const BundleAssets = props => {
133
- var _jobs$, _jobs$$meta, _jobs$$meta$webpack;
134
-
135
161
  const {
136
162
  className,
137
163
  jobs,
@@ -155,12 +181,16 @@ export const BundleAssets = props => {
155
181
  handleResetFilters: resetFilters,
156
182
  handleViewAll: resetAllFilters
157
183
  });
158
- const chunks = ((_jobs$ = jobs[0]) == null ? void 0 : (_jobs$$meta = _jobs$.meta) == null ? void 0 : (_jobs$$meta$webpack = _jobs$$meta.webpack) == null ? void 0 : _jobs$$meta$webpack.chunks) || [];
159
- const renderRowHeader = useMemo(() => getRenderRowHeader({
160
- labels: _map(jobs, 'label'),
161
- CustomComponentLink,
162
- chunks
163
- }), [jobs, chunks]);
184
+ const renderRowHeader = useCallback(row => {
185
+ var _jobs$, _jobs$$meta, _jobs$$meta$webpack;
186
+
187
+ return /*#__PURE__*/React.createElement(RowHeader, {
188
+ row: row,
189
+ labels: _map(jobs, 'label'),
190
+ chunks: ((_jobs$ = jobs[0]) == null ? void 0 : (_jobs$$meta = _jobs$.meta) == null ? void 0 : (_jobs$$meta$webpack = _jobs$$meta.webpack) == null ? void 0 : _jobs$$meta$webpack.chunks) || [],
191
+ CustomComponentLink: CustomComponentLink
192
+ });
193
+ }, [jobs, CustomComponentLink]);
164
194
  return /*#__PURE__*/React.createElement("section", {
165
195
  className: cx(css.root, className)
166
196
  }, /*#__PURE__*/React.createElement(Toolbar, {
@@ -8,10 +8,7 @@
8
8
  margin-right: -1px; /** collapse border */
9
9
  }
10
10
 
11
- .assetName {
12
- display: inline-flex;
13
- align-items: center;
14
- }
11
+ .assetName {}
15
12
 
16
13
  .notPredictive {
17
14
  margin-right: var(--space-xxsmall);
@@ -26,39 +23,48 @@
26
23
  vertical-align: top;
27
24
  }
28
25
 
29
- .assetInfoFlags {
30
- display: inline-block;
26
+ .assetNameTags {
27
+ display: inline;
31
28
  margin-right: var(--space-xxxsmall);
32
29
  }
33
30
 
34
- .assetInfoFlags:empty {
31
+ .assetNameTags:empty {
35
32
  display: none;
36
33
  }
37
34
 
38
- .tag + .tag {
35
+ .assetNameTag {
36
+ vertical-align: middle;
37
+ }
38
+
39
+ .assetNameTag + .assetNameTag {
39
40
  margin-left: 2px;
40
41
  }
41
42
 
42
- .tagEntry {
43
+ .assetNameTagEntry {
43
44
  background: var(--color-info-light);
44
45
  }
45
46
 
46
- .tagEntry::before {
47
+ .assetNameTagEntry::before {
47
48
  content: 'e';
48
49
  }
49
50
 
50
- .tagInitial {
51
+ .assetNameTagInitial {
51
52
  background: var(--color-info-light);
52
53
  }
53
54
 
54
- .tagInitial::before {
55
+ .assetNameTagInitial::before {
55
56
  content: 'i';
56
57
  }
57
58
 
58
- .tagChunk::before {
59
+ .assetNameTagChunk::before {
59
60
  content: 'c';
60
61
  }
61
62
 
63
+ .assetNameText {
64
+ display: inline;
65
+ vertical-align: middle;
66
+ }
67
+
62
68
  /* Tooltip not predictive */
63
69
  .tooltipNotPredictive {
64
70
  text-align: left;
@@ -1,3 +1,5 @@
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); }
2
+
1
3
  import React from 'react';
2
4
  import PropTypes from 'prop-types';
3
5
  import { getBundleAssetsFileTypeComponentLink } from '@bundle-stats/utils';
@@ -9,7 +11,8 @@ export const BundleAssetsTotalsTable = _ref => {
9
11
  let {
10
12
  className,
11
13
  jobs,
12
- customComponentLink: CustomComponentLink
14
+ customComponentLink: CustomComponentLink,
15
+ ...restProps
13
16
  } = _ref;
14
17
  const items = webpack.compareBySection.sizes(jobs);
15
18
 
@@ -27,13 +30,13 @@ export const BundleAssetsTotalsTable = _ref => {
27
30
  }, item.label);
28
31
  };
29
32
 
30
- return /*#__PURE__*/React.createElement(MetricsTable, {
33
+ return /*#__PURE__*/React.createElement(MetricsTable, _extends({
31
34
  className: className,
32
35
  runs: jobs,
33
36
  items: items,
34
37
  renderRowHeader: renderRowHeader,
35
38
  showHeaderSum: true
36
- });
39
+ }, restProps));
37
40
  };
38
41
  BundleAssetsTotalsTable.defaultProps = {
39
42
  className: '',
@@ -35,28 +35,27 @@ const RowHeader = _ref => {
35
35
 
36
36
  const chunkIds = _map(chunks, 'id');
37
37
 
38
- const [showPopopver, setPopover] = useState(false);
39
- const handleOnMouseEnter = useCallback(() => setPopover(true), [showPopopver]);
40
- const content = /*#__PURE__*/React.createElement(FileName, {
38
+ const [showHoverCard, setHoverCard] = useState(false);
39
+ const handleOnMouseEnter = useCallback(() => setHoverCard(true), [showHoverCard]);
40
+ const content = useMemo(() => /*#__PURE__*/React.createElement(FileName, {
41
41
  name: row.label
42
- });
43
- return /*#__PURE__*/React.createElement("div", {
44
- onMouseEnter: handleOnMouseEnter
45
- }, !showPopopver ? content : /*#__PURE__*/React.createElement(HoverCard, {
42
+ }), [row.label]);
43
+
44
+ if (!showHoverCard) {
45
+ return /*#__PURE__*/React.createElement("div", {
46
+ onMouseEnter: handleOnMouseEnter
47
+ }, content);
48
+ }
49
+
50
+ return /*#__PURE__*/React.createElement(HoverCard, {
46
51
  label: content
47
- }, _ref2 => {
48
- let {
49
- close
50
- } = _ref2;
51
- return /*#__PURE__*/React.createElement(ModuleInfo, {
52
- className: css.namePopover,
53
- item: row,
54
- chunks: chunks,
55
- chunkIds: chunkIds,
56
- labels: labels,
57
- customComponentLink: CustomComponentLink,
58
- onClick: close
59
- });
52
+ }, /*#__PURE__*/React.createElement(ModuleInfo, {
53
+ className: css.namePopover,
54
+ item: row,
55
+ chunks: chunks,
56
+ chunkIds: chunkIds,
57
+ labels: labels,
58
+ customComponentLink: CustomComponentLink
60
59
  }));
61
60
  };
62
61
 
@@ -74,22 +73,7 @@ RowHeader.propTypes = {
74
73
  RowHeader.defaultProps = {
75
74
  chunks: []
76
75
  };
77
-
78
- const getRenderRowHeader = _ref3 => {
79
- let {
80
- labels,
81
- chunks,
82
- CustomComponentLink
83
- } = _ref3;
84
- return row => /*#__PURE__*/React.createElement(RowHeader, {
85
- row: row,
86
- chunks: chunks,
87
- labels: labels,
88
- CustomComponentLink: CustomComponentLink
89
- });
90
- };
91
-
92
- export const BundleModules = _ref4 => {
76
+ export const BundleModules = _ref2 => {
93
77
  let {
94
78
  className,
95
79
  jobs,
@@ -107,14 +91,14 @@ export const BundleModules = _ref4 => {
107
91
  updateSearch,
108
92
  hasActiveFilters,
109
93
  customComponentLink: CustomComponentLink
110
- } = _ref4;
94
+ } = _ref2;
111
95
  const rootClassName = cx(css.root, className);
112
- const labels = useMemo(() => _map(jobs, 'label'), [jobs]);
113
- const renderRowHeader = useMemo(() => getRenderRowHeader({
114
- labels,
115
- chunks,
116
- CustomComponentLink
117
- }), [labels, chunks]);
96
+ const renderRowHeader = useCallback(row => /*#__PURE__*/React.createElement(RowHeader, {
97
+ row: row,
98
+ chunks: chunks,
99
+ labels: _map(jobs, 'label'),
100
+ CustomComponentLink: CustomComponentLink
101
+ }), [jobs, chunks, CustomComponentLink]);
118
102
  const emptyMessage = /*#__PURE__*/React.createElement(EmptySet, {
119
103
  resources: "modules",
120
104
  filtered: totalRowCount !== 0,
@@ -142,11 +126,11 @@ export const BundleModules = _ref4 => {
142
126
  ...(!_isEmpty(chunks) && {
143
127
  [MODULE_CHUNK]: {
144
128
  label: 'Chunk',
145
- ...chunks.reduce((chunkFilters, _ref5) => {
129
+ ...chunks.reduce((chunkFilters, _ref3) => {
146
130
  let {
147
131
  id,
148
132
  name
149
- } = _ref5;
133
+ } = _ref3;
150
134
  return { ...chunkFilters,
151
135
  [id]: {
152
136
  label: name,
@@ -171,10 +155,10 @@ export const BundleModules = _ref4 => {
171
155
  className: rootClassName
172
156
  }, /*#__PURE__*/React.createElement(Toolbar, {
173
157
  className: css.toolbar,
174
- renderActions: _ref6 => {
158
+ renderActions: _ref4 => {
175
159
  let {
176
160
  actionClassName
177
- } = _ref6;
161
+ } = _ref4;
178
162
  return /*#__PURE__*/React.createElement(FlexStack, {
179
163
  space: "xxsmall",
180
164
  className: cx(css.dropdown, actionClassName)