@bundle-stats/ui 3.3.0-alpha.1 → 3.3.1-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/CHANGELOG.md +65 -13
  2. package/lib/app/app.js +126 -104
  3. package/lib/app/app.module.css +11 -4
  4. package/lib/app/app.stories.js +1 -22
  5. package/lib/app/header/header.js +3 -11
  6. package/lib/assets/icons.svg +0 -8
  7. package/lib/components/asset-info/asset-info.module.css +1 -0
  8. package/lib/components/bundle-assets/bundle-assets.js +105 -52
  9. package/lib/components/bundle-assets/bundle-assets.module.css +24 -26
  10. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +16 -42
  11. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  12. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +1 -20
  13. package/lib/components/bundle-modules/bundle-modules.js +68 -68
  14. package/lib/components/bundle-modules/bundle-modules.module.css +11 -2
  15. package/lib/components/bundle-modules/bundle-modules.utils.js +14 -10
  16. package/lib/components/bundle-modules/index.js +4 -4
  17. package/lib/components/bundle-packages/bundle-packages.js +100 -44
  18. package/lib/components/bundle-packages/bundle-packages.module.css +17 -21
  19. package/lib/components/delta/delta.module.css +1 -0
  20. package/lib/components/index.js +0 -8
  21. package/lib/components/job-header/job-header.js +3 -1
  22. package/lib/components/job-header/job-header.module.css +6 -8
  23. package/lib/components/jobs-header/jobs-header.module.css +5 -0
  24. package/lib/components/metrics-table/metrics-table.js +72 -59
  25. package/lib/components/metrics-table/metrics-table.module.css +18 -7
  26. package/lib/components/metrics-table-search/metrics-table-search.module.css +5 -4
  27. package/lib/components/metrics-table-title/metrics-table-title.js +9 -7
  28. package/lib/components/metrics-table-title/metrics-table-title.module.css +2 -0
  29. package/lib/components/module-info/module-info.js +2 -2
  30. package/lib/components/module-info/module-info.module.css +1 -0
  31. package/lib/components/summary/summary.js +7 -12
  32. package/lib/components/summary/summary.module.css +1 -1
  33. package/lib/components/summary/summary.stories.js +0 -29
  34. package/lib/components/summary-item/summary-item.js +18 -38
  35. package/lib/components/summary-item/summary-item.module.css +1 -34
  36. package/lib/components/summary-item/summary-item.stories.js +53 -51
  37. package/lib/components/total-size-type-title/total-size-type-title.js +7 -3
  38. package/lib/constants.js +4 -4
  39. package/lib/css/default.css +14 -3
  40. package/lib/css/variables.css +17 -17
  41. package/lib/hooks/search-params.js +31 -31
  42. package/lib/layout/box/box.module.css +9 -0
  43. package/lib/layout/footer/footer.module.css +1 -1
  44. package/lib/layout/index.js +8 -0
  45. package/lib/layout/separator.js +48 -0
  46. package/lib/layout/separator.module.css +5 -0
  47. package/lib/ui/alert/alert.js +3 -13
  48. package/lib/ui/dropdown/dropdown.js +21 -26
  49. package/lib/ui/dropdown/dropdown.module.css +11 -12
  50. package/lib/ui/dropdown/dropdown.stories.js +2 -9
  51. package/lib/ui/empty-set/empty-set.js +5 -4
  52. package/lib/ui/empty-set/empty-set.module.css +2 -2
  53. package/lib/ui/filters/filters.container.js +1 -1
  54. package/lib/ui/filters/filters.js +22 -7
  55. package/lib/ui/filters/filters.module.css +3 -3
  56. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js +1 -1
  57. package/lib/ui/hover-card/hover-card.js +102 -0
  58. package/lib/ui/hover-card/hover-card.module.css +29 -0
  59. package/lib/ui/hover-card/hover-card.stories.js +56 -0
  60. package/lib/{components/budget-info → ui/hover-card}/index.js +4 -4
  61. package/lib/ui/icon/icon.js +6 -8
  62. package/lib/ui/icon/icon.module.css +1 -0
  63. package/lib/ui/index.js +8 -8
  64. package/lib/ui/table/table.js +5 -74
  65. package/lib/ui/table/table.module.css +41 -25
  66. package/lib/ui/table/table.stories.js +1 -1
  67. package/lib/ui/{popover → tag}/index.js +4 -4
  68. package/lib/ui/tag/tag.js +72 -0
  69. package/lib/ui/tag/tag.module.css +55 -0
  70. package/lib/ui/tag/tag.stories.js +38 -0
  71. package/lib/ui/tooltip/tooltip.js +10 -9
  72. package/lib/ui/tooltip/tooltip.module.css +2 -1
  73. package/lib-esm/app/app.js +121 -103
  74. package/lib-esm/app/app.module.css +11 -4
  75. package/lib-esm/app/app.stories.js +1 -22
  76. package/lib-esm/app/header/header.js +3 -10
  77. package/lib-esm/assets/icons.svg +0 -8
  78. package/lib-esm/components/asset-info/asset-info.module.css +1 -0
  79. package/lib-esm/components/bundle-assets/bundle-assets.js +98 -56
  80. package/lib-esm/components/bundle-assets/bundle-assets.module.css +24 -26
  81. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +13 -26
  82. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  83. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +0 -18
  84. package/lib-esm/components/bundle-modules/bundle-modules.js +50 -51
  85. package/lib-esm/components/bundle-modules/bundle-modules.module.css +11 -2
  86. package/lib-esm/components/bundle-modules/bundle-modules.utils.js +14 -6
  87. package/lib-esm/components/bundle-modules/index.js +5 -3
  88. package/lib-esm/components/bundle-packages/bundle-packages.js +88 -41
  89. package/lib-esm/components/bundle-packages/bundle-packages.module.css +17 -21
  90. package/lib-esm/components/delta/delta.module.css +1 -0
  91. package/lib-esm/components/index.js +0 -1
  92. package/lib-esm/components/job-header/job-header.js +2 -1
  93. package/lib-esm/components/job-header/job-header.module.css +6 -8
  94. package/lib-esm/components/jobs-header/jobs-header.module.css +5 -0
  95. package/lib-esm/components/metrics-table/metrics-table.js +61 -53
  96. package/lib-esm/components/metrics-table/metrics-table.module.css +18 -7
  97. package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +5 -4
  98. package/lib-esm/components/metrics-table-title/metrics-table-title.js +8 -7
  99. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +2 -0
  100. package/lib-esm/components/module-info/module-info.js +2 -2
  101. package/lib-esm/components/module-info/module-info.module.css +1 -0
  102. package/lib-esm/components/summary/summary.js +7 -11
  103. package/lib-esm/components/summary/summary.module.css +1 -1
  104. package/lib-esm/components/summary/summary.stories.js +0 -27
  105. package/lib-esm/components/summary-item/summary-item.js +16 -36
  106. package/lib-esm/components/summary-item/summary-item.module.css +1 -34
  107. package/lib-esm/components/summary-item/summary-item.stories.js +38 -50
  108. package/lib-esm/components/total-size-type-title/total-size-type-title.js +6 -3
  109. package/lib-esm/constants.js +4 -4
  110. package/lib-esm/css/default.css +14 -3
  111. package/lib-esm/css/variables.css +17 -17
  112. package/lib-esm/hooks/search-params.js +27 -28
  113. package/lib-esm/layout/box/box.module.css +9 -0
  114. package/lib-esm/layout/footer/footer.module.css +1 -1
  115. package/lib-esm/layout/index.js +1 -0
  116. package/lib-esm/layout/separator.js +28 -0
  117. package/lib-esm/layout/separator.module.css +5 -0
  118. package/lib-esm/ui/alert/alert.js +3 -6
  119. package/lib-esm/ui/dropdown/dropdown.js +20 -25
  120. package/lib-esm/ui/dropdown/dropdown.module.css +11 -12
  121. package/lib-esm/ui/dropdown/dropdown.stories.js +2 -7
  122. package/lib-esm/ui/empty-set/empty-set.js +4 -4
  123. package/lib-esm/ui/empty-set/empty-set.module.css +2 -2
  124. package/lib-esm/ui/filters/filters.js +20 -5
  125. package/lib-esm/ui/filters/filters.module.css +3 -3
  126. package/lib-esm/ui/hover-card/hover-card.js +83 -0
  127. package/lib-esm/ui/hover-card/hover-card.module.css +29 -0
  128. package/lib-esm/ui/hover-card/hover-card.stories.js +35 -0
  129. package/lib-esm/ui/hover-card/index.js +1 -0
  130. package/lib-esm/ui/icon/icon.js +3 -5
  131. package/lib-esm/ui/icon/icon.module.css +1 -0
  132. package/lib-esm/ui/index.js +1 -1
  133. package/lib-esm/ui/table/table.js +5 -65
  134. package/lib-esm/ui/table/table.module.css +41 -25
  135. package/lib-esm/ui/table/table.stories.js +1 -1
  136. package/lib-esm/ui/tag/index.js +1 -0
  137. package/lib-esm/ui/tag/tag.js +45 -0
  138. package/lib-esm/ui/tag/tag.module.css +55 -0
  139. package/lib-esm/ui/tag/tag.stories.js +23 -0
  140. package/lib-esm/ui/tooltip/tooltip.js +10 -9
  141. package/lib-esm/ui/tooltip/tooltip.module.css +2 -1
  142. package/package.json +33 -31
  143. package/src/app/app.jsx +136 -146
  144. package/src/app/app.module.css +11 -4
  145. package/src/app/header/header.jsx +1 -11
  146. package/src/assets/icons.svg +0 -8
  147. package/src/components/asset-info/asset-info.module.css +1 -0
  148. package/src/components/bundle-assets/bundle-assets.jsx +85 -31
  149. package/src/components/bundle-assets/bundle-assets.module.css +24 -26
  150. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.jsx +13 -25
  151. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  152. package/src/components/bundle-modules/bundle-modules.jsx +53 -36
  153. package/src/components/bundle-modules/bundle-modules.module.css +11 -2
  154. package/src/components/bundle-modules/bundle-modules.utils.js +16 -4
  155. package/src/components/bundle-modules/index.jsx +3 -0
  156. package/src/components/bundle-packages/bundle-packages.jsx +89 -39
  157. package/src/components/bundle-packages/bundle-packages.module.css +17 -21
  158. package/src/components/delta/delta.module.css +1 -0
  159. package/src/components/index.js +0 -1
  160. package/src/components/job-header/job-header.jsx +2 -1
  161. package/src/components/job-header/job-header.module.css +6 -8
  162. package/src/components/jobs-header/jobs-header.module.css +5 -0
  163. package/src/components/metrics-table/metrics-table.jsx +53 -44
  164. package/src/components/metrics-table/metrics-table.module.css +18 -7
  165. package/src/components/metrics-table-search/metrics-table-search.module.css +5 -4
  166. package/src/components/metrics-table-title/metrics-table-title.jsx +20 -21
  167. package/src/components/metrics-table-title/metrics-table-title.module.css +2 -0
  168. package/src/components/module-info/module-info.jsx +3 -7
  169. package/src/components/module-info/module-info.module.css +1 -0
  170. package/src/components/summary/summary.jsx +7 -8
  171. package/src/components/summary/summary.module.css +1 -1
  172. package/src/components/summary-item/summary-item.jsx +23 -40
  173. package/src/components/summary-item/summary-item.module.css +1 -34
  174. package/src/components/total-size-type-title/total-size-type-title.jsx +6 -9
  175. package/src/constants.js +11 -7
  176. package/src/css/default.css +14 -3
  177. package/src/css/variables.css +17 -17
  178. package/src/hooks/search-params.js +42 -33
  179. package/src/layout/box/box.module.css +9 -0
  180. package/src/layout/footer/footer.module.css +1 -1
  181. package/src/layout/index.js +1 -0
  182. package/src/layout/separator.jsx +25 -0
  183. package/src/layout/separator.module.css +5 -0
  184. package/src/ui/alert/alert.jsx +2 -7
  185. package/src/ui/dropdown/dropdown.jsx +16 -22
  186. package/src/ui/dropdown/dropdown.module.css +11 -12
  187. package/src/ui/empty-set/empty-set.jsx +25 -21
  188. package/src/ui/empty-set/empty-set.module.css +2 -2
  189. package/src/ui/filters/filters.jsx +64 -53
  190. package/src/ui/filters/filters.module.css +3 -3
  191. package/src/ui/hover-card/hover-card.jsx +73 -0
  192. package/src/ui/hover-card/hover-card.module.css +29 -0
  193. package/src/ui/hover-card/index.js +1 -0
  194. package/src/ui/icon/icon.jsx +11 -9
  195. package/src/ui/icon/icon.module.css +1 -0
  196. package/src/ui/index.js +1 -1
  197. package/src/ui/table/table.jsx +5 -52
  198. package/src/ui/table/table.module.css +41 -25
  199. package/src/ui/tag/index.js +1 -0
  200. package/src/ui/tag/tag.jsx +49 -0
  201. package/src/ui/tag/tag.module.css +55 -0
  202. package/src/ui/tooltip/tooltip.jsx +10 -14
  203. package/src/ui/tooltip/tooltip.module.css +2 -1
  204. package/lib/assets/icons/alert-circle.svg +0 -1
  205. package/lib/assets/icons/check-circle.svg +0 -1
  206. package/lib/components/budget-info/budget-info.js +0 -80
  207. package/lib/components/budget-info/budget-info.module.css +0 -40
  208. package/lib/components/budget-info/budget-info.stories.js +0 -44
  209. package/lib/components/budget-insights/budget-insights.js +0 -200
  210. package/lib/components/budget-insights/budget-insights.module.css +0 -53
  211. package/lib/components/budget-insights/budget-insights.stories.js +0 -104
  212. package/lib/components/budget-insights/index.js +0 -18
  213. package/lib/ui/popover/popover.js +0 -92
  214. package/lib/ui/popover/popover.module.css +0 -66
  215. package/lib/ui/popover/popover.stories.js +0 -26
  216. package/lib-esm/assets/icons/alert-circle.svg +0 -1
  217. package/lib-esm/assets/icons/check-circle.svg +0 -1
  218. package/lib-esm/components/budget-info/budget-info.js +0 -58
  219. package/lib-esm/components/budget-info/budget-info.module.css +0 -40
  220. package/lib-esm/components/budget-info/budget-info.stories.js +0 -30
  221. package/lib-esm/components/budget-info/index.js +0 -1
  222. package/lib-esm/components/budget-insights/budget-insights.js +0 -148
  223. package/lib-esm/components/budget-insights/budget-insights.module.css +0 -53
  224. package/lib-esm/components/budget-insights/budget-insights.stories.js +0 -84
  225. package/lib-esm/components/budget-insights/index.js +0 -1
  226. package/lib-esm/ui/popover/index.js +0 -1
  227. package/lib-esm/ui/popover/popover.js +0 -71
  228. package/lib-esm/ui/popover/popover.module.css +0 -66
  229. package/lib-esm/ui/popover/popover.stories.js +0 -14
  230. package/src/assets/icons/alert-circle.svg +0 -1
  231. package/src/assets/icons/check-circle.svg +0 -1
  232. package/src/components/budget-info/budget-info.jsx +0 -65
  233. package/src/components/budget-info/budget-info.module.css +0 -40
  234. package/src/components/budget-info/index.js +0 -1
  235. package/src/components/budget-insights/budget-insights.jsx +0 -157
  236. package/src/components/budget-insights/budget-insights.module.css +0 -53
  237. package/src/components/budget-insights/index.js +0 -1
  238. package/src/ui/popover/index.js +0 -1
  239. package/src/ui/popover/popover.jsx +0 -79
  240. package/src/ui/popover/popover.module.css +0 -66
@@ -29,10 +29,12 @@ var _icon = require("../../ui/icon");
29
29
 
30
30
  var _fileName = require("../../ui/file-name");
31
31
 
32
- var _popover = require("../../ui/popover");
32
+ var _hoverCard = require("../../ui/hover-card");
33
33
 
34
34
  var _tooltip = require("../../ui/tooltip");
35
35
 
36
+ var _tag = require("../../ui/tag");
37
+
36
38
  var _filters = require("../../ui/filters");
37
39
 
38
40
  var _sortDropdown = require("../../ui/sort-dropdown");
@@ -126,53 +128,100 @@ TooltipNotPredictive.propTypes = {
126
128
 
127
129
  };
128
130
 
129
- var getRenderRowHeader = function getRenderRowHeader(_ref6) {
130
- var labels = _ref6.labels,
131
- CustomComponentLink = _ref6.CustomComponentLink,
132
- chunks = _ref6.chunks;
133
- return function (item) {
134
- var label = item.label,
135
- isNotPredictive = item.isNotPredictive,
136
- runs = item.runs,
137
- isChunk = item.isChunk,
138
- isEntry = item.isEntry,
139
- isInitial = item.isInitial;
140
- return /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
141
- label: /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
142
- name: label
143
- }),
144
- icon: /*#__PURE__*/_react["default"].createElement("div", {
145
- className: _bundleAssetsModule["default"].assetInfoFlags
146
- }, isNotPredictive && /*#__PURE__*/_react["default"].createElement(_tooltip.Tooltip, {
147
- className: _bundleAssetsModule["default"].notPredictive,
148
- title: /*#__PURE__*/_react["default"].createElement(TooltipNotPredictive, {
149
- runs: runs
150
- })
151
- }, /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
152
- className: _bundleAssetsModule["default"].notPredictiveIcon,
153
- glyph: "warning"
154
- })), isChunk && /*#__PURE__*/_react["default"].createElement("span", {
155
- title: "Chunk",
156
- className: _bundleAssetsModule["default"].flagChunk
157
- }, "c"), isEntry && /*#__PURE__*/_react["default"].createElement("span", {
158
- title: "Entrypoint",
159
- className: _bundleAssetsModule["default"].flagEntry
160
- }, "e"), isInitial && /*#__PURE__*/_react["default"].createElement("span", {
161
- title: "Initial",
162
- className: _bundleAssetsModule["default"].flagInitial
163
- }, "i"))
164
- }, /*#__PURE__*/_react["default"].createElement(_assetInfo.AssetInfo, {
165
- className: _bundleAssetsModule["default"].assetInfo,
166
- item: item,
167
- labels: labels,
168
- chunks: chunks,
169
- CustomComponentLink: CustomComponentLink
131
+ var RowHeader = function RowHeader(_ref6) {
132
+ var row = _ref6.row,
133
+ labels = _ref6.labels,
134
+ chunks = _ref6.chunks,
135
+ CustomComponentLink = _ref6.CustomComponentLink;
136
+ var label = row.label,
137
+ isNotPredictive = row.isNotPredictive,
138
+ runs = row.runs,
139
+ isChunk = row.isChunk,
140
+ isEntry = row.isEntry,
141
+ isInitial = row.isInitial;
142
+
143
+ var _useState = (0, _react.useState)(false),
144
+ _useState2 = _slicedToArray(_useState, 2),
145
+ showHoverCard = _useState2[0],
146
+ setHoverCard = _useState2[1];
147
+
148
+ var handleOnMouseEnter = (0, _react.useCallback)(function () {
149
+ return setHoverCard(true);
150
+ }, [showHoverCard]);
151
+ var content = (0, _react.useMemo)(function () {
152
+ return /*#__PURE__*/_react["default"].createElement("span", {
153
+ className: _bundleAssetsModule["default"].assetName
154
+ }, /*#__PURE__*/_react["default"].createElement("span", {
155
+ className: _bundleAssetsModule["default"].assetNameTags
156
+ }, isNotPredictive && /*#__PURE__*/_react["default"].createElement(_tooltip.Tooltip, {
157
+ className: _bundleAssetsModule["default"].notPredictive,
158
+ title: /*#__PURE__*/_react["default"].createElement(TooltipNotPredictive, {
159
+ runs: runs
160
+ })
161
+ }, /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
162
+ className: _bundleAssetsModule["default"].notPredictiveIcon,
163
+ glyph: "warning"
164
+ })), isChunk && /*#__PURE__*/_react["default"].createElement(_tag.Tag, {
165
+ className: (0, _classnames["default"])(_bundleAssetsModule["default"].assetNameTag, _bundleAssetsModule["default"].assetNameTagChunk),
166
+ title: "Chunk",
167
+ size: _tag.Tag.SIZES.SMALL,
168
+ kind: _tag.Tag.KINDS.INFO
169
+ }), isEntry && /*#__PURE__*/_react["default"].createElement(_tag.Tag, {
170
+ className: (0, _classnames["default"])(_bundleAssetsModule["default"].assetNameTag, _bundleAssetsModule["default"].assetNameTagEntry),
171
+ title: "Entrypoint",
172
+ size: _tag.Tag.SIZES.SMALL,
173
+ kind: _tag.Tag.KINDS.INFO
174
+ }), isInitial && /*#__PURE__*/_react["default"].createElement(_tag.Tag, {
175
+ className: (0, _classnames["default"])(_bundleAssetsModule["default"].assetNameTag, _bundleAssetsModule["default"].assetNameTagInitial),
176
+ title: "Initial",
177
+ size: _tag.Tag.SIZES.SMALL,
178
+ kind: _tag.Tag.KINDS.INFO
179
+ })), /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
180
+ className: _bundleAssetsModule["default"].assetNameText,
181
+ name: label
170
182
  }));
171
- };
183
+ }, [isChunk, isEntry, isInitial, isNotPredictive, runs]);
184
+
185
+ if (!showHoverCard) {
186
+ return /*#__PURE__*/_react["default"].createElement("span", {
187
+ onMouseEnter: handleOnMouseEnter
188
+ }, content);
189
+ }
190
+
191
+ return /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
192
+ label: content
193
+ }, /*#__PURE__*/_react["default"].createElement(_assetInfo.AssetInfo, {
194
+ className: _bundleAssetsModule["default"].assetInfo,
195
+ item: row,
196
+ labels: labels,
197
+ chunks: chunks,
198
+ CustomComponentLink: CustomComponentLink
199
+ }));
200
+ };
201
+
202
+ RowHeader.propTypes = {
203
+ row: _propTypes["default"].shape({
204
+ label: _propTypes["default"].string,
205
+ isNotPredictive: _propTypes["default"].bool,
206
+ isChunk: _propTypes["default"].bool,
207
+ isInitial: _propTypes["default"].bool,
208
+ isEntry: _propTypes["default"].bool,
209
+ runs: _propTypes["default"].arrayOf(_propTypes["default"].object) // eslint-disable-line react/forbid-prop-types
210
+
211
+ }).isRequired,
212
+ chunks: _propTypes["default"].arrayOf(_propTypes["default"].shape({
213
+ id: _propTypes["default"].string,
214
+ name: _propTypes["default"].string
215
+ })),
216
+ labels: _propTypes["default"].arrayOf(_propTypes["default"].string).isRequired,
217
+ CustomComponentLink: _propTypes["default"].elementType.isRequired
218
+ };
219
+ RowHeader.defaultProps = {
220
+ chunks: []
172
221
  };
173
222
 
174
223
  var BundleAssets = function BundleAssets(props) {
175
- var _jobs$, _jobs$$meta, _jobs$$meta$webpack, _ASSET_ENTRY_TYPE, _ref8;
224
+ var _ASSET_ENTRY_TYPE, _ref8;
176
225
 
177
226
  var className = props.className,
178
227
  jobs = props.jobs,
@@ -197,14 +246,16 @@ var BundleAssets = function BundleAssets(props) {
197
246
  handleViewAll: resetAllFilters
198
247
  });
199
248
 
200
- var chunks = ((_jobs$ = jobs[0]) === null || _jobs$ === void 0 ? void 0 : (_jobs$$meta = _jobs$.meta) === null || _jobs$$meta === void 0 ? void 0 : (_jobs$$meta$webpack = _jobs$$meta.webpack) === null || _jobs$$meta$webpack === void 0 ? void 0 : _jobs$$meta$webpack.chunks) || [];
201
- var renderRowHeader = (0, _react.useMemo)(function () {
202
- return getRenderRowHeader({
249
+ var renderRowHeader = (0, _react.useCallback)(function (row) {
250
+ var _jobs$, _jobs$$meta, _jobs$$meta$webpack;
251
+
252
+ return /*#__PURE__*/_react["default"].createElement(RowHeader, {
253
+ row: row,
203
254
  labels: (0, _map2["default"])(jobs, 'label'),
204
- CustomComponentLink: CustomComponentLink,
205
- chunks: chunks
255
+ chunks: ((_jobs$ = jobs[0]) === null || _jobs$ === void 0 ? void 0 : (_jobs$$meta = _jobs$.meta) === null || _jobs$$meta === void 0 ? void 0 : (_jobs$$meta$webpack = _jobs$$meta.webpack) === null || _jobs$$meta$webpack === void 0 ? void 0 : _jobs$$meta$webpack.chunks) || [],
256
+ CustomComponentLink: CustomComponentLink
206
257
  });
207
- }, [jobs, chunks]);
258
+ }, [jobs, CustomComponentLink]);
208
259
  return /*#__PURE__*/_react["default"].createElement("section", {
209
260
  className: (0, _classnames["default"])(_bundleAssetsModule["default"].root, className)
210
261
  }, /*#__PURE__*/_react["default"].createElement(_toolbar.Toolbar, {
@@ -212,7 +263,7 @@ var BundleAssets = function BundleAssets(props) {
212
263
  renderActions: function renderActions(_ref7) {
213
264
  var actionClassName = _ref7.actionClassName;
214
265
  return /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
215
- space: "xsmall",
266
+ space: "xxsmall",
216
267
  className: (0, _classnames["default"])(_bundleAssetsModule["default"].dropdown, actionClassName)
217
268
  }, /*#__PURE__*/_react["default"].createElement(_sortDropdown.SortDropdown, _extends({
218
269
  fields: sortFields
@@ -223,7 +274,9 @@ var BundleAssets = function BundleAssets(props) {
223
274
  handleResetFilters: resetFilters
224
275
  }));
225
276
  }
226
- }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, null, /*#__PURE__*/_react["default"].createElement(_metricsTableSearch.MetricsTableSearch, {
277
+ }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
278
+ space: "xxsmall"
279
+ }, /*#__PURE__*/_react["default"].createElement(_metricsTableSearch.MetricsTableSearch, {
227
280
  className: _bundleAssetsModule["default"].toolbarSearch,
228
281
  placeholder: "Search by name",
229
282
  search: search,
@@ -8,6 +8,8 @@
8
8
  margin-right: -1px; /** collapse border */
9
9
  }
10
10
 
11
+ .assetName {}
12
+
11
13
  .notPredictive {
12
14
  margin-right: var(--space-xxsmall);
13
15
  display: inline-block;
@@ -21,50 +23,46 @@
21
23
  vertical-align: top;
22
24
  }
23
25
 
24
- .assetInfoFlags {
25
- display: inline-block;
26
+ .assetNameTags {
27
+ display: inline;
26
28
  margin-right: var(--space-xxxsmall);
27
29
  }
28
30
 
29
- .assetInfoFlags:empty {
31
+ .assetNameTags:empty {
30
32
  display: none;
31
33
  }
32
34
 
33
- .flag {
34
- display: inline-block;
35
- width: var(--space-xsmall);
36
- height: var(--space-xsmall);
37
- font-family: var(--font-family);
38
- font-size: 8px;
39
- font-weight: bold;
40
- background: var(--color-highlight);
41
- color: var(--color-text-light);
42
- line-height: var(--space-xsmall);
43
- text-align: center;
44
- text-transform: uppercase;
35
+ .assetNameTag {
45
36
  vertical-align: middle;
46
37
  }
47
38
 
48
- .flag + .flag {
39
+ .assetNameTag + .assetNameTag {
49
40
  margin-left: 2px;
50
41
  }
51
42
 
52
- .flagEntry {
53
- composes: flag;
43
+ .assetNameTagEntry {
54
44
  background: var(--color-info-light);
55
- color: var(--color-background);
56
45
  }
57
46
 
58
- .flagInitial {
59
- composes: flag;
47
+ .assetNameTagEntry::before {
48
+ content: 'e';
49
+ }
50
+
51
+ .assetNameTagInitial {
60
52
  background: var(--color-info-light);
61
- color: var(--color-background);
62
53
  }
63
54
 
64
- .flagChunk {
65
- composes: flag;
66
- background: var(--color-info);
67
- color: var(--color-background);
55
+ .assetNameTagInitial::before {
56
+ content: 'i';
57
+ }
58
+
59
+ .assetNameTagChunk::before {
60
+ content: 'c';
61
+ }
62
+
63
+ .assetNameText {
64
+ display: inline;
65
+ vertical-align: middle;
68
66
  }
69
67
 
70
68
  /* Tooltip not predictive */
@@ -7,9 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.BundleAssetsTotalsTable = void 0;
9
9
 
10
- var _get2 = _interopRequireDefault(require("lodash/get"));
11
-
12
- var _react = _interopRequireWildcard(require("react"));
10
+ var _react = _interopRequireDefault(require("react"));
13
11
 
14
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
13
 
@@ -19,15 +17,11 @@ var webpack = _interopRequireWildcard(require("@bundle-stats/utils/lib-esm/webpa
19
17
 
20
18
  var _constants = require("../../constants");
21
19
 
22
- var _flexStack = require("../../layout/flex-stack");
23
-
24
20
  var _metricsTable = require("../metrics-table");
25
21
 
26
22
  var _componentLink = require("../component-link");
27
23
 
28
- var _budgetInfo = require("../budget-info");
29
-
30
- var _bundleAssetsTotalsTableModule = _interopRequireDefault(require("./bundle-assets-totals-table.module.css"));
24
+ var _excluded = ["className", "jobs", "customComponentLink"];
31
25
 
32
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
27
 
@@ -35,29 +29,21 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
35
29
 
36
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
37
31
 
38
- function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
39
-
40
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
41
-
42
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
43
-
44
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
32
+ 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); }
45
33
 
46
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
34
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
47
35
 
48
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
36
+ 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; }
49
37
 
50
38
  var BundleAssetsTotalsTable = function BundleAssetsTotalsTable(_ref) {
51
- var _jobs$0$insights, _jobs$0$insights$webp;
52
-
53
39
  var className = _ref.className,
54
40
  jobs = _ref.jobs,
55
- CustomComponentLink = _ref.customComponentLink;
56
- var items = (0, _react.useMemo)(function () {
57
- return webpack.compareBySection.sizes(jobs);
58
- }, [jobs]);
59
- var budgets = (_jobs$0$insights = jobs[0].insights) === null || _jobs$0$insights === void 0 ? void 0 : (_jobs$0$insights$webp = _jobs$0$insights.webpack) === null || _jobs$0$insights$webp === void 0 ? void 0 : _jobs$0$insights$webp.budgets;
60
- var renderRowHeader = (0, _react.useCallback)(function (item) {
41
+ CustomComponentLink = _ref.customComponentLink,
42
+ restProps = _objectWithoutProperties(_ref, _excluded);
43
+
44
+ var items = webpack.compareBySection.sizes(jobs);
45
+
46
+ var renderRowHeader = function renderRowHeader(item) {
61
47
  var fileType = _constants.ASSETS_SIZES_FILE_TYPE_MAP[item.key];
62
48
 
63
49
  var _getBundleAssetsFileT = (0, _utils.getBundleAssetsFileTypeComponentLink)(fileType, item.label),
@@ -65,32 +51,20 @@ var BundleAssetsTotalsTable = function BundleAssetsTotalsTable(_ref) {
65
51
  title = _getBundleAssetsFileT.title,
66
52
  params = _getBundleAssetsFileT.params;
67
53
 
68
- var _item$key$split = item.key.split('.'),
69
- _item$key$split2 = _toArray(_item$key$split),
70
- _ = _item$key$split2[0],
71
- metricSlugs = _item$key$split2.slice(1);
72
-
73
- var metricKey = metricSlugs.join('.');
74
- var budget = (0, _get2["default"])(budgets, metricKey);
75
54
  return /*#__PURE__*/_react["default"].createElement(CustomComponentLink, {
76
55
  section: section,
77
56
  title: title,
78
57
  params: params
79
- }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
80
- space: "xxsmall",
81
- className: _bundleAssetsTotalsTableModule["default"].itemTitleText
82
- }, /*#__PURE__*/_react["default"].createElement("span", null, item.label), budget && /*#__PURE__*/_react["default"].createElement(_budgetInfo.BudgetInfo, {
83
- metricId: item.key,
84
- budgetInsight: budget
85
- })));
86
- }, [CustomComponentLink]);
87
- return /*#__PURE__*/_react["default"].createElement(_metricsTable.MetricsTable, {
58
+ }, item.label);
59
+ };
60
+
61
+ return /*#__PURE__*/_react["default"].createElement(_metricsTable.MetricsTable, _extends({
88
62
  className: className,
89
63
  runs: jobs,
90
64
  items: items,
91
65
  renderRowHeader: renderRowHeader,
92
66
  showHeaderSum: true
93
- });
67
+ }, restProps));
94
68
  };
95
69
 
96
70
  exports.BundleAssetsTotalsTable = BundleAssetsTotalsTable;
@@ -1,3 +1,3 @@
1
- .itemTitleText {
2
- align-items: center;
1
+ .title {
2
+ color: var(--color-text-light);
3
3
  }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.WithBudgets = exports.SingleJob = exports.MultipleJobs = exports.EmptyBaseline = void 0;
6
+ exports["default"] = exports.SingleJob = exports.MultipleJobs = exports.EmptyBaseline = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -52,23 +52,4 @@ EmptyBaseline.args = {
52
52
  jobs: (0, _utils.createJobs)([{
53
53
  webpack: _webpackStatsCurrent["default"]
54
54
  }, null])
55
- };
56
- var WithBudgets = Template.bind();
57
- exports.WithBudgets = WithBudgets;
58
- WithBudgets.args = {
59
- jobs: (0, _utils.createJobs)([{
60
- webpack: _webpackStatsCurrent["default"]
61
- }, {
62
- webpack: _webpackStatsBaseline["default"]
63
- }], {
64
- webpack: {
65
- budgets: [{
66
- metric: 'sizes.totalSizeByTypeJS',
67
- value: 2 * 1024 * 1024
68
- }, {
69
- metric: 'sizes.totalSizeByTypeCSS',
70
- value: 20 * 1024
71
- }]
72
- }
73
- })
74
55
  };
@@ -35,10 +35,12 @@ var _fileName = require("../../ui/file-name");
35
35
 
36
36
  var _filters = require("../../ui/filters");
37
37
 
38
- var _popover = require("../../ui/popover");
38
+ var _hoverCard = require("../../ui/hover-card");
39
39
 
40
40
  var _sortDropdown = require("../../ui/sort-dropdown");
41
41
 
42
+ var _tag = require("../../ui/tag");
43
+
42
44
  var _toolbar = require("../../ui/toolbar");
43
45
 
44
46
  var _metricsTable = require("../metrics-table");
@@ -88,39 +90,47 @@ var RowHeader = function RowHeader(_ref) {
88
90
 
89
91
  var _useState = (0, _react.useState)(false),
90
92
  _useState2 = _slicedToArray(_useState, 2),
91
- showPopopver = _useState2[0],
92
- setPopover = _useState2[1];
93
+ showHoverCard = _useState2[0],
94
+ setHoverCard = _useState2[1];
93
95
 
94
96
  var handleOnMouseEnter = (0, _react.useCallback)(function () {
95
- return setPopover(true);
96
- }, [showPopopver]);
97
+ return setHoverCard(true);
98
+ }, [showHoverCard]);
99
+ var content = (0, _react.useMemo)(function () {
100
+ return /*#__PURE__*/_react["default"].createElement("span", {
101
+ className: _bundleModulesModule["default"].name
102
+ }, row.duplicated && /*#__PURE__*/_react["default"].createElement(_tag.Tag, {
103
+ className: _bundleModulesModule["default"].nameTagDuplicated,
104
+ size: "small",
105
+ kind: _tag.Tag.KINDS.DANGER
106
+ }), /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
107
+ className: _bundleModulesModule["default"].nameText,
108
+ name: row.label
109
+ }));
110
+ }, [row]);
97
111
 
98
- var content = /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
99
- name: row.label
100
- });
112
+ if (!showHoverCard) {
113
+ return /*#__PURE__*/_react["default"].createElement("div", {
114
+ onMouseEnter: handleOnMouseEnter
115
+ }, content);
116
+ }
101
117
 
102
- return /*#__PURE__*/_react["default"].createElement("div", {
103
- onMouseEnter: handleOnMouseEnter
104
- }, !showPopopver ? content : /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
105
- ariaLabel: "View module info",
118
+ return /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
106
119
  label: content
107
- }, function (_ref2) {
108
- var popoverToggle = _ref2.popoverToggle;
109
- return /*#__PURE__*/_react["default"].createElement(_moduleInfo.ModuleInfo, {
110
- className: _bundleModulesModule["default"].namePopover,
111
- item: row,
112
- chunks: chunks,
113
- chunkIds: chunkIds,
114
- labels: labels,
115
- customComponentLink: CustomComponentLink,
116
- onClick: popoverToggle
117
- });
120
+ }, /*#__PURE__*/_react["default"].createElement(_moduleInfo.ModuleInfo, {
121
+ className: _bundleModulesModule["default"].namePopover,
122
+ item: row,
123
+ chunks: chunks,
124
+ chunkIds: chunkIds,
125
+ labels: labels,
126
+ customComponentLink: CustomComponentLink
118
127
  }));
119
128
  };
120
129
 
121
130
  RowHeader.propTypes = {
122
131
  row: _propTypes["default"].shape({
123
- label: _propTypes["default"].string
132
+ label: _propTypes["default"].string,
133
+ duplicated: _propTypes["default"].bool
124
134
  }).isRequired,
125
135
  chunks: _propTypes["default"].arrayOf(_propTypes["default"].shape({
126
136
  id: _propTypes["default"].string,
@@ -133,50 +143,34 @@ RowHeader.defaultProps = {
133
143
  chunks: []
134
144
  };
135
145
 
136
- var getRenderRowHeader = function getRenderRowHeader(_ref3) {
137
- var labels = _ref3.labels,
138
- chunks = _ref3.chunks,
139
- CustomComponentLink = _ref3.CustomComponentLink;
140
- return function (row) {
141
- return /*#__PURE__*/_react["default"].createElement(RowHeader, {
142
- row: row,
143
- chunks: chunks,
144
- labels: labels,
145
- CustomComponentLink: CustomComponentLink
146
- });
147
- };
148
- };
149
-
150
- var BundleModules = function BundleModules(_ref4) {
146
+ var BundleModules = function BundleModules(_ref2) {
151
147
  var _MODULE_SOURCE_TYPE, _objectSpread2;
152
148
 
153
- var className = _ref4.className,
154
- jobs = _ref4.jobs,
155
- items = _ref4.items,
156
- chunks = _ref4.chunks,
157
- totalRowCount = _ref4.totalRowCount,
158
- updateFilters = _ref4.updateFilters,
159
- resetFilters = _ref4.resetFilters,
160
- resetAllFilters = _ref4.resetAllFilters,
161
- filters = _ref4.filters,
162
- sortFields = _ref4.sortFields,
163
- sort = _ref4.sort,
164
- updateSort = _ref4.updateSort,
165
- search = _ref4.search,
166
- updateSearch = _ref4.updateSearch,
167
- hasActiveFilters = _ref4.hasActiveFilters,
168
- CustomComponentLink = _ref4.customComponentLink;
149
+ var className = _ref2.className,
150
+ jobs = _ref2.jobs,
151
+ items = _ref2.items,
152
+ chunks = _ref2.chunks,
153
+ totalRowCount = _ref2.totalRowCount,
154
+ updateFilters = _ref2.updateFilters,
155
+ resetFilters = _ref2.resetFilters,
156
+ resetAllFilters = _ref2.resetAllFilters,
157
+ filters = _ref2.filters,
158
+ sortFields = _ref2.sortFields,
159
+ sort = _ref2.sort,
160
+ updateSort = _ref2.updateSort,
161
+ search = _ref2.search,
162
+ updateSearch = _ref2.updateSearch,
163
+ hasActiveFilters = _ref2.hasActiveFilters,
164
+ CustomComponentLink = _ref2.customComponentLink;
169
165
  var rootClassName = (0, _classnames["default"])(_bundleModulesModule["default"].root, className);
170
- var labels = (0, _react.useMemo)(function () {
171
- return (0, _map2["default"])(jobs, 'label');
172
- }, [jobs]);
173
- var renderRowHeader = (0, _react.useMemo)(function () {
174
- return getRenderRowHeader({
175
- labels: labels,
166
+ var renderRowHeader = (0, _react.useCallback)(function (row) {
167
+ return /*#__PURE__*/_react["default"].createElement(RowHeader, {
168
+ row: row,
176
169
  chunks: chunks,
170
+ labels: (0, _map2["default"])(jobs, 'label'),
177
171
  CustomComponentLink: CustomComponentLink
178
172
  });
179
- }, [labels, chunks]);
173
+ }, [jobs, chunks, CustomComponentLink]);
180
174
 
181
175
  var emptyMessage = /*#__PURE__*/_react["default"].createElement(_emptySet.EmptySet, {
182
176
  resources: "modules",
@@ -189,6 +183,10 @@ var BundleModules = function BundleModules(_ref4) {
189
183
  label: 'Changed',
190
184
  defaultValue: filters.changed,
191
185
  disabled: jobs.length <= 1
186
+ }), _defineProperty(_objectSpread2, _utils.MODULE_FILTERS.DUPLICATED, {
187
+ label: 'Duplicated',
188
+ defaultValue: filters[_utils.MODULE_FILTERS.DUPLICATED],
189
+ disabled: jobs.length <= 1
192
190
  }), _defineProperty(_objectSpread2, _utils.MODULE_SOURCE_TYPE, (_MODULE_SOURCE_TYPE = {
193
191
  label: 'Source'
194
192
  }, _defineProperty(_MODULE_SOURCE_TYPE, _utils.MODULE_FILTERS.FIRST_PARTY, {
@@ -199,9 +197,9 @@ var BundleModules = function BundleModules(_ref4) {
199
197
  defaultValue: (0, _get2["default"])(filters, "".concat(_utils.MODULE_SOURCE_TYPE, ".").concat(_utils.MODULE_FILTERS.THIRD_PARTY), true)
200
198
  }), _MODULE_SOURCE_TYPE)), _objectSpread2), !(0, _isEmpty2["default"])(chunks) && _defineProperty({}, _utils.MODULE_CHUNK, _objectSpread({
201
199
  label: 'Chunk'
202
- }, chunks.reduce(function (chunkFilters, _ref5) {
203
- var id = _ref5.id,
204
- name = _ref5.name;
200
+ }, chunks.reduce(function (chunkFilters, _ref3) {
201
+ var id = _ref3.id,
202
+ name = _ref3.name;
205
203
  return _objectSpread(_objectSpread({}, chunkFilters), {}, _defineProperty({}, id, {
206
204
  label: name,
207
205
  defaultValue: (0, _get2["default"])(filters, "".concat(_utils.MODULE_CHUNK, ".").concat(id), true)
@@ -219,8 +217,8 @@ var BundleModules = function BundleModules(_ref4) {
219
217
  className: rootClassName
220
218
  }, /*#__PURE__*/_react["default"].createElement(_toolbar.Toolbar, {
221
219
  className: _bundleModulesModule["default"].toolbar,
222
- renderActions: function renderActions(_ref7) {
223
- var actionClassName = _ref7.actionClassName;
220
+ renderActions: function renderActions(_ref5) {
221
+ var actionClassName = _ref5.actionClassName;
224
222
  return /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
225
223
  space: "xxsmall",
226
224
  className: (0, _classnames["default"])(_bundleModulesModule["default"].dropdown, actionClassName)
@@ -233,7 +231,9 @@ var BundleModules = function BundleModules(_ref4) {
233
231
  handleResetFilters: resetFilters
234
232
  }));
235
233
  }
236
- }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, null, /*#__PURE__*/_react["default"].createElement(_metricsTableSearch.MetricsTableSearch, {
234
+ }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
235
+ space: "xxsmall"
236
+ }, /*#__PURE__*/_react["default"].createElement(_metricsTableSearch.MetricsTableSearch, {
237
237
  className: _bundleModulesModule["default"].toolbarSearch,
238
238
  search: search,
239
239
  updateSearch: updateSearch,
@@ -12,6 +12,15 @@
12
12
  margin-right: -1px; /** collapse border */
13
13
  }
14
14
 
15
- .namePopover {
16
- min-width: 280px;
15
+ .nameTagDuplicated {
16
+ margin-right: var(--space-xxxsmall);
17
+ vertical-align: baseline;
18
+ }
19
+
20
+ .nameTagDuplicated::before {
21
+ content: 'D';
22
+ }
23
+
24
+ .nameText {
25
+ vertical-align: middle;
17
26
  }