@bundle-stats/ui 4.13.0-beta.9 → 4.13.0-rc.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 (247) hide show
  1. package/lib/app/app.js +4 -8
  2. package/lib/app/app.js.map +1 -1
  3. package/lib/app/app.module.css +2 -2
  4. package/lib/assets/icons.svg +70 -67
  5. package/lib/assets/icons.svg.js +14 -12
  6. package/lib/assets/icons.svg.js.map +1 -1
  7. package/lib/components/bundle-assets/bundle-assets.js +61 -26
  8. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  9. package/lib/components/bundle-assets/bundle-assets.module.css +0 -5
  10. package/lib/components/bundle-assets/index.js +3 -1
  11. package/lib/components/bundle-assets/index.js.map +1 -1
  12. package/lib/components/bundle-assets-totals/bundle-assets-totals.js +14 -12
  13. package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  14. package/lib/components/bundle-modules/bundle-modules.i18n.js +1 -1
  15. package/lib/components/bundle-modules/bundle-modules.js +42 -15
  16. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  17. package/lib/components/bundle-modules/bundle-modules.module.css +0 -5
  18. package/lib/components/bundle-modules/bundle-modules.utils.js +2 -13
  19. package/lib/components/bundle-modules/bundle-modules.utils.js.map +1 -1
  20. package/lib/components/bundle-modules/index.js +2 -1
  21. package/lib/components/bundle-modules/index.js.map +1 -1
  22. package/lib/components/bundle-packages/bundle-packages.js +48 -9
  23. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  24. package/lib/components/bundle-packages/bundle-packages.module.css +0 -5
  25. package/lib/components/delta/delta.js +1 -1
  26. package/lib/components/delta/delta.js.map +1 -1
  27. package/lib/components/delta/delta.module.css +10 -1
  28. package/lib/components/jobs-header/jobs-header.module.css +0 -4
  29. package/lib/components/metrics-display-selector/metrics-display-selector.js +41 -4
  30. package/lib/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
  31. package/lib/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
  32. package/lib/components/metrics-treemap/index.js +4 -0
  33. package/lib/components/metrics-treemap/index.js.map +1 -1
  34. package/lib/components/metrics-treemap/metrics-treemap.constants.js +10 -0
  35. package/lib/components/metrics-treemap/metrics-treemap.constants.js.map +1 -0
  36. package/lib/components/metrics-treemap/metrics-treemap.i18n.js +6 -0
  37. package/lib/components/metrics-treemap/metrics-treemap.i18n.js.map +1 -0
  38. package/lib/components/metrics-treemap/metrics-treemap.js +131 -95
  39. package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -1
  40. package/lib/components/metrics-treemap/metrics-treemap.module.css +179 -54
  41. package/lib/components/metrics-treemap/metrics-treemap.utils.js +168 -0
  42. package/lib/components/metrics-treemap/metrics-treemap.utils.js.map +1 -0
  43. package/lib/components/module-info/module-info.js +1 -2
  44. package/lib/components/module-info/module-info.js.map +1 -1
  45. package/lib/components/run-info/run-info.module.css +7 -7
  46. package/lib/css/variables.css +14 -13
  47. package/lib/hooks/metrics-display-type.js +45 -24
  48. package/lib/hooks/metrics-display-type.js.map +1 -1
  49. package/lib/hooks/search-params.js +1 -0
  50. package/lib/hooks/search-params.js.map +1 -1
  51. package/lib/layout/box/box.module.css +4 -2
  52. package/lib/layout/flex-stack/flex-stack.js +3 -4
  53. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  54. package/lib/layout/flex-stack/flex-stack.module.css +19 -23
  55. package/lib/ui/button/button.js +5 -4
  56. package/lib/ui/button/button.js.map +1 -1
  57. package/lib/ui/button/button.module.css +55 -53
  58. package/lib/ui/dropdown/dropdown.js +2 -2
  59. package/lib/ui/dropdown/dropdown.js.map +1 -1
  60. package/lib/ui/filters/filters.js +2 -2
  61. package/lib/ui/filters/filters.js.map +1 -1
  62. package/lib/ui/filters/filters.module.css +8 -1
  63. package/lib/ui/hover-card/hover-card.js +1 -1
  64. package/lib/ui/hover-card/hover-card.js.map +1 -1
  65. package/lib/ui/icon/icon.js +2 -1
  66. package/lib/ui/icon/icon.js.map +1 -1
  67. package/lib/ui/input-search/input-search.js +1 -1
  68. package/lib/ui/input-search/input-search.js.map +1 -1
  69. package/lib/ui/loader/loader.js +1 -1
  70. package/lib/ui/loader/loader.js.map +1 -1
  71. package/lib/ui/table/table.module.css +30 -0
  72. package/lib/ui/tag/tag.module.css +3 -3
  73. package/lib/ui/toolbar/toolbar.module.css +1 -3
  74. package/lib/utils/colors.js +22 -0
  75. package/lib/utils/colors.js.map +1 -0
  76. package/lib/{utils.js → utils/components.js} +2 -17
  77. package/lib/utils/components.js.map +1 -0
  78. package/lib/utils/index.js +20 -0
  79. package/lib/utils/index.js.map +1 -0
  80. package/lib/utils/jobs.js +18 -0
  81. package/lib/utils/jobs.js.map +1 -0
  82. package/lib-esm/app/app.js +4 -8
  83. package/lib-esm/app/app.js.map +1 -1
  84. package/lib-esm/app/app.module.css +2 -2
  85. package/lib-esm/assets/icons.svg +70 -67
  86. package/lib-esm/assets/icons.svg.js +14 -12
  87. package/lib-esm/assets/icons.svg.js.map +1 -1
  88. package/lib-esm/components/bundle-assets/bundle-assets.js +62 -28
  89. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  90. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -5
  91. package/lib-esm/components/bundle-assets/index.js +3 -1
  92. package/lib-esm/components/bundle-assets/index.js.map +1 -1
  93. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +15 -13
  94. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  95. package/lib-esm/components/bundle-modules/bundle-modules.i18n.js +1 -1
  96. package/lib-esm/components/bundle-modules/bundle-modules.js +43 -16
  97. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  98. package/lib-esm/components/bundle-modules/bundle-modules.module.css +0 -5
  99. package/lib-esm/components/bundle-modules/bundle-modules.utils.js +1 -11
  100. package/lib-esm/components/bundle-modules/bundle-modules.utils.js.map +1 -1
  101. package/lib-esm/components/bundle-modules/index.js +3 -2
  102. package/lib-esm/components/bundle-modules/index.js.map +1 -1
  103. package/lib-esm/components/bundle-packages/bundle-packages.js +49 -10
  104. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  105. package/lib-esm/components/bundle-packages/bundle-packages.module.css +0 -5
  106. package/lib-esm/components/delta/delta.js +1 -1
  107. package/lib-esm/components/delta/delta.js.map +1 -1
  108. package/lib-esm/components/delta/delta.module.css +10 -1
  109. package/lib-esm/components/jobs-header/jobs-header.module.css +0 -4
  110. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js +41 -4
  111. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
  112. package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
  113. package/lib-esm/components/metrics-treemap/index.js +1 -0
  114. package/lib-esm/components/metrics-treemap/index.js.map +1 -1
  115. package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js +7 -0
  116. package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js.map +1 -0
  117. package/lib-esm/components/metrics-treemap/metrics-treemap.i18n.js +3 -0
  118. package/lib-esm/components/metrics-treemap/metrics-treemap.i18n.js.map +1 -0
  119. package/lib-esm/components/metrics-treemap/metrics-treemap.js +134 -98
  120. package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -1
  121. package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +179 -54
  122. package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js +162 -0
  123. package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js.map +1 -0
  124. package/lib-esm/components/module-info/module-info.js +1 -2
  125. package/lib-esm/components/module-info/module-info.js.map +1 -1
  126. package/lib-esm/components/run-info/run-info.module.css +7 -7
  127. package/lib-esm/css/variables.css +14 -13
  128. package/lib-esm/hooks/metrics-display-type.js +46 -24
  129. package/lib-esm/hooks/metrics-display-type.js.map +1 -1
  130. package/lib-esm/hooks/search-params.js +1 -0
  131. package/lib-esm/hooks/search-params.js.map +1 -1
  132. package/lib-esm/layout/box/box.module.css +4 -2
  133. package/lib-esm/layout/flex-stack/flex-stack.js +3 -4
  134. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  135. package/lib-esm/layout/flex-stack/flex-stack.module.css +19 -23
  136. package/lib-esm/ui/button/button.js +5 -4
  137. package/lib-esm/ui/button/button.js.map +1 -1
  138. package/lib-esm/ui/button/button.module.css +55 -53
  139. package/lib-esm/ui/dropdown/dropdown.js +2 -2
  140. package/lib-esm/ui/dropdown/dropdown.js.map +1 -1
  141. package/lib-esm/ui/filters/filters.js +2 -2
  142. package/lib-esm/ui/filters/filters.js.map +1 -1
  143. package/lib-esm/ui/filters/filters.module.css +8 -1
  144. package/lib-esm/ui/hover-card/hover-card.js +1 -1
  145. package/lib-esm/ui/hover-card/hover-card.js.map +1 -1
  146. package/lib-esm/ui/icon/icon.js +2 -1
  147. package/lib-esm/ui/icon/icon.js.map +1 -1
  148. package/lib-esm/ui/input-search/input-search.js +1 -1
  149. package/lib-esm/ui/input-search/input-search.js.map +1 -1
  150. package/lib-esm/ui/loader/loader.js +1 -1
  151. package/lib-esm/ui/loader/loader.js.map +1 -1
  152. package/lib-esm/ui/table/table.module.css +30 -0
  153. package/lib-esm/ui/tag/tag.module.css +3 -3
  154. package/lib-esm/ui/toolbar/toolbar.module.css +1 -3
  155. package/lib-esm/utils/colors.js +15 -0
  156. package/lib-esm/utils/colors.js.map +1 -0
  157. package/lib-esm/utils/components.js +16 -0
  158. package/lib-esm/utils/components.js.map +1 -0
  159. package/lib-esm/utils/index.js +4 -0
  160. package/lib-esm/utils/index.js.map +1 -0
  161. package/lib-esm/utils/jobs.js +11 -0
  162. package/lib-esm/utils/jobs.js.map +1 -0
  163. package/package.json +9 -9
  164. package/src/app/app.jsx +4 -12
  165. package/src/app/app.module.css +2 -2
  166. package/src/assets/icons/check.svg +4 -0
  167. package/src/assets/icons.svg +70 -67
  168. package/src/assets/icons.svg.jsx +12 -12
  169. package/src/components/bundle-assets/bundle-assets.jsx +147 -66
  170. package/src/components/bundle-assets/bundle-assets.module.css +0 -5
  171. package/src/components/bundle-assets/index.jsx +4 -0
  172. package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +53 -46
  173. package/src/components/bundle-modules/bundle-modules.i18n.ts +1 -1
  174. package/src/components/bundle-modules/bundle-modules.module.css +0 -5
  175. package/src/components/bundle-modules/bundle-modules.tsx +140 -56
  176. package/src/components/bundle-modules/bundle-modules.types.d.ts +2 -17
  177. package/src/components/bundle-modules/bundle-modules.utils.ts +7 -18
  178. package/src/components/bundle-modules/index.tsx +4 -3
  179. package/src/components/bundle-packages/bundle-packages.jsx +89 -20
  180. package/src/components/bundle-packages/bundle-packages.module.css +0 -5
  181. package/src/components/delta/delta.jsx +1 -1
  182. package/src/components/delta/delta.module.css +10 -1
  183. package/src/components/jobs-header/jobs-header.module.css +0 -4
  184. package/src/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
  185. package/src/components/metrics-display-selector/metrics-display-selector.stories.tsx +33 -0
  186. package/src/components/metrics-display-selector/metrics-display-selector.tsx +83 -25
  187. package/src/components/metrics-treemap/__tests__/metrics-treemap.utils.ts +188 -0
  188. package/src/components/metrics-treemap/index.ts +1 -0
  189. package/src/components/metrics-treemap/metrics-treemap.constants.ts +63 -0
  190. package/src/components/metrics-treemap/metrics-treemap.i18n.ts +2 -0
  191. package/src/components/metrics-treemap/metrics-treemap.module.css +179 -54
  192. package/src/components/metrics-treemap/metrics-treemap.stories.tsx +44 -10
  193. package/src/components/metrics-treemap/metrics-treemap.tsx +453 -184
  194. package/src/components/metrics-treemap/metrics-treemap.utils.ts +268 -0
  195. package/src/components/module-info/module-info.tsx +1 -1
  196. package/src/components/run-info/run-info.module.css +7 -7
  197. package/src/css/variables.css +14 -13
  198. package/src/hooks/metrics-display-type.ts +79 -29
  199. package/src/hooks/search-params.js +1 -0
  200. package/src/layout/box/box.module.css +4 -2
  201. package/src/layout/flex-stack/flex-stack.module.css +19 -23
  202. package/src/layout/flex-stack/flex-stack.tsx +2 -8
  203. package/src/ui/button/button.module.css +55 -53
  204. package/src/ui/button/button.stories.tsx +16 -9
  205. package/src/ui/button/button.tsx +8 -7
  206. package/src/ui/dropdown/dropdown.tsx +2 -3
  207. package/src/ui/filters/filters.module.css +8 -1
  208. package/src/ui/filters/filters.tsx +2 -3
  209. package/src/ui/hover-card/hover-card.tsx +1 -1
  210. package/src/ui/icon/icon.tsx +2 -1
  211. package/src/ui/input-search/input-search.tsx +1 -0
  212. package/src/ui/loader/loader.jsx +1 -1
  213. package/src/ui/table/table.module.css +30 -0
  214. package/src/ui/tag/tag.module.css +3 -3
  215. package/src/ui/toolbar/toolbar.module.css +1 -3
  216. package/src/utils/colors.ts +19 -0
  217. package/src/utils/components.tsx +19 -0
  218. package/src/utils/index.ts +3 -0
  219. package/src/utils/jobs.ts +22 -0
  220. package/types/components/bundle-assets/bundle-assets.d.ts +1 -5
  221. package/types/components/bundle-modules/bundle-modules.d.ts +4 -2
  222. package/types/components/bundle-modules/bundle-modules.i18n.d.ts +1 -1
  223. package/types/components/bundle-modules/bundle-modules.utils.d.ts +3 -7
  224. package/types/components/bundle-modules/index.d.ts +2 -2
  225. package/types/components/delta/delta.d.ts +2 -2
  226. package/types/components/metrics-display-selector/metrics-display-selector.d.ts +3 -1
  227. package/types/components/metrics-treemap/index.d.ts +1 -0
  228. package/types/components/metrics-treemap/metrics-treemap.constants.d.ts +28 -0
  229. package/types/components/metrics-treemap/metrics-treemap.d.ts +7 -5
  230. package/types/components/metrics-treemap/metrics-treemap.i18n.d.ts +2 -0
  231. package/types/components/metrics-treemap/metrics-treemap.utils.d.ts +15 -0
  232. package/types/hooks/metrics-display-type.d.ts +8 -2
  233. package/types/ui/dropdown/dropdown.d.ts +0 -1
  234. package/types/ui/icon/icon.d.ts +4 -2
  235. package/types/ui/loader/loader.d.ts +2 -2
  236. package/types/utils/colors.d.ts +1 -0
  237. package/types/utils/components.d.ts +2 -0
  238. package/types/utils/index.d.ts +3 -0
  239. package/types/utils/jobs.d.ts +7 -0
  240. package/lib/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
  241. package/lib/utils.js.map +0 -1
  242. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
  243. package/lib-esm/utils.js +0 -30
  244. package/lib-esm/utils.js.map +0 -1
  245. package/src/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
  246. package/src/utils.jsx +0 -38
  247. package/types/utils.d.ts +0 -3
@@ -4,7 +4,9 @@ import cx from 'classnames';
4
4
  import { COMPONENT, PACKAGE_FILTERS, PACKAGES_SEPARATOR, SECTIONS } from '@bundle-stats/utils';
5
5
  import config from '../../config.json';
6
6
  import I18N from '../../i18n';
7
+ import { Box } from '../../layout/box';
7
8
  import { FlexStack } from '../../layout/flex-stack';
9
+ import { Stack } from '../../layout/stack';
8
10
  import { InputSearch } from '../../ui/input-search';
9
11
  import { EmptySet } from '../../ui/empty-set';
10
12
  import { Filters } from '../../ui/filters';
@@ -21,8 +23,11 @@ import { SEARCH_PLACEHOLDER } from './bundle-packages.i18n';
21
23
  import css from './bundle-packages.module.css';
22
24
  import { MetricsDisplaySelector } from '../metrics-display-selector';
23
25
  import { MetricsDisplayType } from '../../constants';
24
- import { MetricsTreemap } from '../metrics-treemap';
26
+ import { MetricsTreemap, getTreemapNodes, getTreemapNodesGroupedByPath } from '../metrics-treemap';
25
27
  import { useMetricsDisplayType } from '../../hooks/metrics-display-type';
28
+ const DISPLAY_TYPE_GROUPS = {
29
+ [MetricsDisplayType.TREEMAP]: ['folder'],
30
+ };
26
31
  const getDropdownFilters = ({ compareMode, filters }) => ({
27
32
  [PACKAGE_FILTERS.CHANGED]: {
28
33
  label: 'Changed',
@@ -76,10 +81,47 @@ RowHeader.propTypes = {
76
81
  filters: PropTypes.object,
77
82
  search: PropTypes.string,
78
83
  };
84
+ const ViewMetricsTreemap = (props) => {
85
+ const { metricsTableTitle, jobs, items, displayType, emptyMessage, showEntryInfo, updateSearch, search } = props;
86
+ const treeNodes = useMemo(() => {
87
+ if (displayType.groupBy === 'folder') {
88
+ return getTreemapNodesGroupedByPath(items);
89
+ }
90
+ return getTreemapNodes(items);
91
+ }, [items, displayType.groupBy]);
92
+ const onGroupClick = useCallback((groupPath) => {
93
+ if (groupPath === '') {
94
+ updateSearch('');
95
+ return;
96
+ }
97
+ const newSearch = `^${groupPath}/`;
98
+ if (newSearch === search) {
99
+ updateSearch('');
100
+ return;
101
+ }
102
+ updateSearch(newSearch);
103
+ }, [updateSearch, search]);
104
+ return (React.createElement(React.Fragment, null,
105
+ React.createElement(Table, { compact: true },
106
+ React.createElement(MetricsTableHeader, { metricTitle: metricsTableTitle, showSum: true, jobs: jobs, rows: items })),
107
+ React.createElement(MetricsTreemap, { treeNodes: treeNodes, nested: Boolean(displayType.groupBy), emptyMessage: emptyMessage, onItemClick: showEntryInfo, onGroupClick: onGroupClick })));
108
+ };
109
+ ViewMetricsTreemap.propTypes = {
110
+ jobs: PropTypes.arrayOf(PropTypes.object).isRequired,
111
+ items: PropTypes.arrayOf(PropTypes.object).isRequired,
112
+ metricsTableTitle: PropTypes.node.isRequired,
113
+ displayType: PropTypes.shape({
114
+ groupBy: PropTypes.string,
115
+ }).isRequired,
116
+ emptyMessage: PropTypes.node.isRequired,
117
+ showEntryInfo: PropTypes.func.isRequired,
118
+ updateSearch: PropTypes.func.isRequired,
119
+ search: PropTypes.string.isRequired,
120
+ };
79
121
  export const BundlePackages = (props) => {
80
122
  const { className, jobs, items, updateFilters, resetFilters, resetAllFilters, totalRowCount, filters, sort, updateSort, search, updateSearch, hasActiveFilters, customComponentLink: CustomComponentLink, entryId, allItems, hideEntryInfo, showEntryInfo, } = props;
81
123
  const jobLabels = jobs === null || jobs === void 0 ? void 0 : jobs.map((job) => job === null || job === void 0 ? void 0 : job.label);
82
- const [displayType, setDisplayType] = useMetricsDisplayType();
124
+ const [displayType, setDisplayType] = useMetricsDisplayType(DISPLAY_TYPE_GROUPS);
83
125
  const dropdownFilters = useMemo(() => getDropdownFilters({ compareMode: (jobs === null || jobs === void 0 ? void 0 : jobs.length) > 1, filters }), [jobs, filters]);
84
126
  const metricsTableTitle = useMemo(() => (React.createElement(MetricsTableTitle, { title: I18N.PACKAGES, info: `${items.length}/${totalRowCount}`, popoverInfo: I18N.PACKAGES_INFO, popoverHref: config.documentation.packages })), [items, totalRowCount]);
85
127
  const renderRowHeader = useCallback((row) => (React.createElement(RowHeader, { row: row, labels: jobLabels, CustomComponentLink: CustomComponentLink, filters: filters, search: search })), [CustomComponentLink, jobLabels, filters, search]);
@@ -91,19 +133,16 @@ export const BundlePackages = (props) => {
91
133
  return allItems.find(({ key }) => key === entryId);
92
134
  }, [allItems, entryId]);
93
135
  return (React.createElement(React.Fragment, null,
94
- React.createElement("section", { className: cx(css.root, className) },
136
+ React.createElement(Stack, { space: "xsmall", as: "section", className: cx(css.root, className) },
95
137
  React.createElement(Toolbar, { className: css.toolbar, renderActions: ({ actionClassName }) => (React.createElement(FlexStack, { space: "xxsmall", className: cx(css.dropdown, actionClassName) },
96
- React.createElement(MetricsDisplaySelector, { onSelect: setDisplayType, value: displayType }),
138
+ React.createElement(MetricsDisplaySelector, { onSelect: setDisplayType, value: displayType.value, groupBy: displayType.groupBy, groups: DISPLAY_TYPE_GROUPS }),
97
139
  React.createElement(MetricsTableOptions, { handleViewAll: resetAllFilters, handleResetFilters: resetFilters }))) },
98
140
  React.createElement(FlexStack, { space: "xxsmall" },
99
141
  React.createElement(InputSearch, { className: css.toolbarSearch, placeholder: SEARCH_PLACEHOLDER, defaultValue: search, onChange: updateSearch }),
100
142
  React.createElement(Filters, { filters: dropdownFilters, label: `Filters (${items.length}/${totalRowCount})`, onChange: updateFilters, hasActiveFilters: hasActiveFilters }))),
101
- React.createElement("main", null,
102
- displayType === MetricsDisplayType.TABLE && (React.createElement(MetricsTable, { runs: jobs, items: items, emptyMessage: emptyMessage, renderRowHeader: renderRowHeader, showHeaderSum: true, title: metricsTableTitle, sort: sort, updateSort: updateSort })),
103
- displayType === MetricsDisplayType.TREEMAP && (React.createElement(React.Fragment, null,
104
- React.createElement(Table, { compact: true },
105
- React.createElement(MetricsTableHeader, { metricTitle: metricsTableTitle, showSum: true, jobs: jobs, rows: items })),
106
- React.createElement(MetricsTreemap, { emptyMessage: emptyMessage, items: items, onItemClick: showEntryInfo }))))),
143
+ React.createElement(Box, { outline: true, as: "main" },
144
+ displayType.value === MetricsDisplayType.TABLE && (React.createElement(MetricsTable, { runs: jobs, items: items, emptyMessage: emptyMessage, renderRowHeader: renderRowHeader, showHeaderSum: true, title: metricsTableTitle, sort: sort, updateSort: updateSort })),
145
+ displayType.value === MetricsDisplayType.TREEMAP && (React.createElement(ViewMetricsTreemap, { jobs: jobs, items: items, displayType: displayType, emptyMessage: emptyMessage, showEntryInfo: showEntryInfo, updateSearch: updateSearch, search: search })))),
107
146
  entryItem && (React.createElement(PackageInfo, { className: css.packageInfo, item: entryItem, labels: jobLabels, customComponentLink: CustomComponentLink, onClose: hideEntryInfo }))));
108
147
  };
109
148
  BundlePackages.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-packages.js","sourceRoot":"","sources":["../../../src/components/bundle-packages/bundle-packages.jsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle-packages.js","sourceRoot":"","sources":["../../../src/components/bundle-packages/bundle-packages.jsx"],"names":[],"mappings":"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"}
@@ -2,14 +2,9 @@
2
2
  color: var(--color-text-light);
3
3
  }
4
4
 
5
- .toolbar {
6
- border-bottom: 1px solid var(--color-outline);
7
- }
8
-
9
5
  .toolbarSearch {
10
6
  width: 100%;
11
7
  max-width: 240px;
12
- margin-right: -1px; /** collapse border */
13
8
  }
14
9
 
15
10
  .hoverCard {
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import css from './delta.module.css';
5
- export const Delta = ({ className, displayValue, deltaType, inverted }) => {
5
+ export const Delta = ({ className = '', displayValue, deltaType, inverted = false }) => {
6
6
  const rootClassName = cx(css.root, className, inverted && css.inverted, css[deltaType]);
7
7
  return React.createElement("span", { className: rootClassName }, displayValue);
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"delta.js","sourceRoot":"","sources":["../../../src/components/delta/delta.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,GAAG,MAAM,oBAAoB,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxE,MAAM,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACxF,OAAO,8BAAM,SAAS,EAAE,aAAa,IAAG,YAAY,CAAQ,CAAC;AAC/D,CAAC,CAAC;AAEF,KAAK,CAAC,YAAY,GAAG;IACnB,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF,KAAK,CAAC,SAAS,GAAG;IAChB,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACzC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACtC,QAAQ,EAAE,SAAS,CAAC,IAAI;CACzB,CAAC"}
1
+ {"version":3,"file":"delta.js","sourceRoot":"","sources":["../../../src/components/delta/delta.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,GAAG,MAAM,oBAAoB,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE,EAAE;IACrF,MAAM,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACxF,OAAO,8BAAM,SAAS,EAAE,aAAa,IAAG,YAAY,CAAQ,CAAC;AAC/D,CAAC,CAAC;AAEF,KAAK,CAAC,YAAY,GAAG;IACnB,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF,KAAK,CAAC,SAAS,GAAG;IAChB,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACzC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACtC,QAAQ,EAAE,SAAS,CAAC,IAAI;CACzB,CAAC"}
@@ -4,6 +4,10 @@
4
4
  white-space: nowrap;
5
5
  }
6
6
 
7
+ .CHANGE {
8
+ color: var(--color-info);
9
+ }
10
+
7
11
  .HIGH_NEGATIVE {
8
12
  color: var(--color-red-dark);
9
13
  }
@@ -29,11 +33,16 @@
29
33
  }
30
34
 
31
35
  .inverted {
32
- border-radius: var(--radius-small);
36
+ padding: 0 2px;
37
+ border-radius: var(--radius-xsmall);
33
38
  background-color: var(--color-gray-ultra-light);
34
39
  color: var(--color-light);
35
40
  }
36
41
 
42
+ .inverted.CHANGE {
43
+ background: var(--color-info-light);
44
+ }
45
+
37
46
  .inverted.HIGH_NEGATIVE {
38
47
  background: var(--color-red-dark);
39
48
  }
@@ -24,10 +24,6 @@
24
24
  background: linear-gradient(90deg, transparent, var(--color-background));
25
25
  }
26
26
 
27
- .item + .item {
28
- margin-left: var(--space-small);
29
- }
30
-
31
27
  .item:first-child {
32
28
  border-left: 0;
33
29
  padding-left: 0;
@@ -3,12 +3,49 @@ import cx from 'classnames';
3
3
  import { MetricsDisplayType } from '../../constants';
4
4
  import { Button } from '../../ui/button';
5
5
  import { ControlGroup } from '../../ui/control-group';
6
+ import { Dropdown, DropdownItem } from '../../ui/dropdown';
6
7
  import { Icon } from '../../ui/icon';
7
8
  import css from './metrics-display-selector.module.css';
9
+ import { FlexStack } from '../../layout';
10
+ const DEFAULT_GROUP_BY = '';
11
+ const METRICS_DISPLAY_MAP = {
12
+ [MetricsDisplayType.TABLE]: {
13
+ glyph: Icon.ICONS.TABLE,
14
+ label: 'Table',
15
+ },
16
+ [MetricsDisplayType.TREEMAP]: {
17
+ glyph: Icon.ICONS.TREEMAP,
18
+ label: 'Treemap',
19
+ },
20
+ };
21
+ const displayTypes = Object.values(MetricsDisplayType);
8
22
  export const MetricsDisplaySelector = (props) => {
9
- const { className = '', value, onSelect, ...restProps } = props;
10
- return (React.createElement(ControlGroup, { className: cx(css.root, className), ...restProps },
11
- React.createElement(Button, { outline: true, active: value === MetricsDisplayType.TABLE, size: "small", type: "button", glyph: Icon.ICONS.TABLE, onClick: () => onSelect(MetricsDisplayType.TABLE), className: css.button }, "Table"),
12
- React.createElement(Button, { outline: true, active: value === MetricsDisplayType.TREEMAP, size: "small", type: "button", glyph: Icon.ICONS.TREEMAP, onClick: () => onSelect(MetricsDisplayType.TREEMAP), className: cx(css.button) }, "Treemap")));
23
+ const { value, groupBy = DEFAULT_GROUP_BY, groups = {}, onSelect, ...restProps } = props;
24
+ return (React.createElement(ControlGroup, { ...restProps }, displayTypes.map((displayType, index) => {
25
+ const displayGroups = groups === null || groups === void 0 ? void 0 : groups[displayType];
26
+ const displayProps = METRICS_DISPLAY_MAP[displayType];
27
+ const isLast = displayTypes.length - 1 === index;
28
+ const isActive = displayType === value;
29
+ if (!displayGroups || displayGroups.length === 0) {
30
+ return (React.createElement(Button, { outline: true, active: isActive, size: "small", type: "button", glyph: displayProps.glyph, onClick: () => onSelect(displayType), className: isLast && css.itemLast, key: displayType }, displayProps.label));
31
+ }
32
+ const displayGroupsData = [
33
+ {
34
+ value: DEFAULT_GROUP_BY,
35
+ label: 'No groups',
36
+ },
37
+ ...displayGroups.map((displayGroup) => ({
38
+ value: displayGroup,
39
+ label: `Group by ${displayGroup}`,
40
+ })),
41
+ ];
42
+ return (React.createElement(Dropdown, { glyph: displayProps.glyph, label: displayProps.label, className: cx(isLast && css.itemLast, isActive && css.buttonActive), key: displayType }, displayGroupsData.map((displayGroupData) => {
43
+ const isGroupActive = isActive && displayGroupData.value === groupBy;
44
+ return (React.createElement(DropdownItem, { onClick: () => onSelect(displayType, displayGroupData.value), isActive: isGroupActive, className: cx(css.dropdownItem, isGroupActive && css.dropdownItemActive), key: displayGroupData.value },
45
+ React.createElement(FlexStack, { space: "xxxsmall", alignItems: "center" },
46
+ React.createElement(Icon, { glyph: Icon.ICONS.CHECK, size: "small", className: css.dropdownItemIcon }),
47
+ React.createElement("span", null, displayGroupData.label))));
48
+ })));
49
+ })));
13
50
  };
14
51
  //# sourceMappingURL=metrics-display-selector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics-display-selector.js","sourceRoot":"","sources":["../../../src/components/metrics-display-selector/metrics-display-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,GAAG,MAAM,uCAAuC,CAAC;AAOxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KACuE,EACvE,EAAE;IACF,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEhE,OAAO,CACL,oBAAC,YAAY,IAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,KAAM,SAAS;QAC7D,oBAAC,MAAM,IACL,OAAO,QACP,MAAM,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,EAC1C,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,EACjD,SAAS,EAAE,GAAG,CAAC,MAAM,YAGd;QACT,oBAAC,MAAM,IACL,OAAO,QACP,MAAM,EAAE,KAAK,KAAK,kBAAkB,CAAC,OAAO,EAC5C,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,EACnD,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,cAGlB,CACI,CAChB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"metrics-display-selector.js","sourceRoot":"","sources":["../../../src/components/metrics-display-selector/metrics-display-selector.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,18 @@
1
- .button {
2
- text-decoration: none;
1
+ .buttonActive {
2
+ background: var(--color-highlight);
3
3
  }
4
4
 
5
- .buttonActive,
6
- .buttonActive:active,
7
- .buttonActive:focus {
8
- color: var(--color-primary);
9
- border-color: var(--color-primary);
5
+ /* explicit ControlGroup last item styles to override ariakit injected sibling nodes */
6
+ .itemLast {
7
+ border-top-right-radius: var(--radius-small) !important;
8
+ border-bottom-right-radius: var(--radius-small) !important;
9
+ }
10
+
11
+ .dropdownItemIcon {
12
+ opacity: 0;
13
+ transition: var(--transition-out);
14
+ }
15
+
16
+ .dropdownItemActive .dropdownItemIcon {
17
+ opacity: 1;
10
18
  }
@@ -1,2 +1,3 @@
1
1
  export * from './metrics-treemap';
2
+ export { getTreemapNodes, getTreemapNodesGroupedByPath } from './metrics-treemap.utils';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const SQUARIFY_RATIO = 1.66;
2
+ export const PADDING_OUTER = 1;
3
+ export const PADDING_INNER = 2;
4
+ export const NESTED_PADDING = 4;
5
+ export const NESTED_PADDING_TOP = 16 + NESTED_PADDING * 2;
6
+ export const NESTED_PADDING_LEFT = 8;
7
+ //# sourceMappingURL=metrics-treemap.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-treemap.constants.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/metrics-treemap.constants.ts"],"names":[],"mappings":"AAyDA,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,cAAc,GAAG,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const TILE_GROUP_LABEL = 'View children entries';
2
+ export const TILE_LABEL = 'View entry info';
3
+ //# sourceMappingURL=metrics-treemap.i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-treemap.i18n.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/metrics-treemap.i18n.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC"}
@@ -1,135 +1,171 @@
1
- import React, { forwardRef, useCallback, useMemo, useRef } from 'react';
2
- import { useDebounce, useHoverDirty, useMeasure, useMouseHovered } from 'react-use';
1
+ import React, { forwardRef, useCallback, useMemo, useRef, } from 'react';
2
+ import { useHoverDirty, useMeasure } from 'react-use';
3
3
  import cx from 'classnames';
4
4
  import { hierarchy, treemap, treemapSquarify } from 'd3';
5
- import { Tooltip, TooltipArrow, TooltipAnchor, useTooltipState } from 'ariakit/tooltip';
5
+ import { Tooltip, TooltipArrow, TooltipAnchor } from 'ariakit/tooltip';
6
+ import { METRIC_TYPE_CONFIGS, formatFileSize, getMetricRunInfo, } from '@bundle-stats/utils';
6
7
  import { Stack } from '../../layout/stack';
7
8
  import { FileName } from '../../ui/file-name';
8
9
  import { Delta } from '../delta';
9
10
  import { RunInfo } from '../run-info';
11
+ import { SQUARIFY_RATIO, PADDING_OUTER, PADDING_INNER, NESTED_PADDING, NESTED_PADDING_TOP, NESTED_PADDING_LEFT, } from './metrics-treemap.constants';
12
+ import * as I18N from './metrics-treemap.i18n';
10
13
  import css from './metrics-treemap.module.css';
11
- const SQUARIFY_RATIO = 1.33;
12
- const PADDING_OUTER = 0;
13
- const PADDING_INNER = 2;
14
- const PADDING_TOP = 4;
15
- const PADDING_BOTTOM = 2;
16
- const PADDING_LEFT = 16;
17
- const PADDING_RIGHT = 4;
18
- const VERTICAL_SPACING = 4;
19
- const LINE_HEIGHT = 16;
20
- const LINE_HEIGHT_SMALL = 13.3;
21
- function resolveLeafSizeDisplay(width, height) {
22
- if (height > PADDING_TOP + PADDING_BOTTOM + VERTICAL_SPACING + LINE_HEIGHT * 2 &&
23
- width > PADDING_LEFT + PADDING_RIGHT + 128) {
24
- return 'default';
25
- }
26
- if (height > PADDING_TOP + PADDING_BOTTOM + LINE_HEIGHT_SMALL * 2 &&
27
- width > PADDING_LEFT + PADDING_BOTTOM + 48) {
28
- return 'small';
29
- }
30
- return 'minimal';
31
- }
32
- const LeafTooltipContent = (props) => {
14
+ import { resolveGroupDeltaType, resolveTileSizeDisplay, resolveTileGroupSizeDisplay, useTooltipStateWithMouseFollow, } from './metrics-treemap.utils';
15
+ const TileTooltipContent = (props) => {
33
16
  const { item } = props;
34
17
  const currentRun = item.runs[0];
35
18
  const baselineRun = item.runs[item.runs.length - 1];
36
- return (React.createElement(Stack, { space: "small", className: css.leafTooltipContent },
37
- React.createElement("h3", { className: css.leafTooltipContentTitle },
19
+ return (React.createElement(Stack, { space: "small", className: css.tileTooltipContent },
20
+ React.createElement("h3", { className: css.tileTooltipContentTitle },
38
21
  React.createElement(FileName, { as: "code", name: item.label })),
39
22
  React.createElement(RunInfo, { current: currentRun.displayValue, delta: currentRun.displayDeltaPercentage, deltaType: currentRun.deltaType, baseline: (baselineRun === null || baselineRun === void 0 ? void 0 : baselineRun.displayValue) || '0B' })));
40
23
  };
41
- const LeafContent = forwardRef((props, ref) => {
42
- const { sizeDisplay, item, runInfo } = props;
24
+ const TileContent = forwardRef((props, ref) => {
25
+ const { label, sizeDisplay, item, runInfo } = props;
43
26
  if (sizeDisplay === 'minimal') {
44
- return React.createElement("div", { className: css.leafContent, ref: ref });
27
+ return React.createElement("div", { className: css.tileContent, ref: ref });
45
28
  }
46
- return (React.createElement("div", { className: css.leafContent, ref: ref },
47
- React.createElement(FileName, { as: "p", className: css.leadContentLabel, name: item.label }),
48
- sizeDisplay !== 'small' && (React.createElement("p", { className: css.leadContentValue },
49
- React.createElement("span", { className: css.leadContentMetric }, runInfo.displayValue),
50
- React.createElement(Delta, { className: css.leadContentDelta, displayValue: runInfo.displayDeltaPercentage, deltaType: runInfo.deltaType })))));
29
+ const resolvedLabel = label || item.label;
30
+ if (sizeDisplay === 'small') {
31
+ return (React.createElement("div", { className: css.tileContent, ref: ref },
32
+ React.createElement("p", { className: css.tileContentLabel }, resolvedLabel)));
33
+ }
34
+ return (React.createElement("div", { className: css.tileContent, ref: ref },
35
+ React.createElement("p", { className: css.tileContentLabel }, label || item.label),
36
+ React.createElement("p", { className: css.tileContentValue },
37
+ React.createElement("span", { className: css.tileContentMetric }, runInfo.displayValue),
38
+ React.createElement(Delta, { className: css.tileContentDelta, displayValue: runInfo.displayDeltaPercentage, deltaType: runInfo.deltaType }))));
51
39
  });
52
- const LeafContentWithTooltip = (props) => {
53
- const { sizeDisplay, item, runInfo, parentRef } = props;
54
- const pointer = useMouseHovered(parentRef, { whenHovered: true });
55
- const getAnchorRect = useCallback(() => {
56
- var _a, _b, _c, _d;
57
- if (pointer.docX === 0 && pointer.docY === 0 && pointer.elW === 0 && pointer.elH === 0) {
58
- return null;
59
- }
60
- const newRect = {
61
- x: pointer.docX - ((_b = (_a = document === null || document === void 0 ? void 0 : document.defaultView) === null || _a === void 0 ? void 0 : _a.scrollX) !== null && _b !== void 0 ? _b : 0),
62
- y: pointer.docY - ((_d = (_c = document === null || document === void 0 ? void 0 : document.defaultView) === null || _c === void 0 ? void 0 : _c.scrollY) !== null && _d !== void 0 ? _d : 0),
63
- w: 1,
64
- h: 1,
65
- };
66
- return newRect;
67
- }, [pointer.docX, pointer.docY]);
68
- const tooltipState = useTooltipState({ gutter: 12, getAnchorRect, timeout: 120 });
69
- useDebounce(tooltipState.render, 5, [pointer.docX, pointer.docY]);
40
+ const TileContentWithTooltip = (props) => {
41
+ const { label, sizeDisplay, item, runInfo, parentRef } = props;
42
+ const tooltipState = useTooltipStateWithMouseFollow({ parentRef });
70
43
  return (React.createElement(React.Fragment, null,
71
- React.createElement(TooltipAnchor, { state: tooltipState, className: css.leafContentTooltipAnchor },
72
- React.createElement(LeafContent, { sizeDisplay: sizeDisplay, item: item, runInfo: runInfo })),
44
+ React.createElement(TooltipAnchor, { state: tooltipState, className: css.tileContentTooltipAnchor },
45
+ React.createElement(TileContent, { label: label, sizeDisplay: sizeDisplay, item: item, runInfo: runInfo })),
73
46
  React.createElement(Tooltip, { state: tooltipState, className: css.tooltip },
74
- React.createElement(TooltipArrow, { state: tooltipState, size: 16, className: css.leafTooltipArrow }),
75
- React.createElement(LeafTooltipContent, { item: item }))));
47
+ React.createElement(TooltipArrow, { state: tooltipState, size: 16, className: css.tileTooltipArrow }),
48
+ React.createElement(TileTooltipContent, { item: item }))));
76
49
  };
77
- const Leaf = (props) => {
50
+ const Tile = (props) => {
78
51
  var _a;
79
52
  const { left, top, width, height, data, onClick } = props;
80
- const { item } = data;
53
+ const { item, label } = data;
81
54
  const runInfo = (_a = item.runs) === null || _a === void 0 ? void 0 : _a[0];
82
- const sizeDisplay = useMemo(() => resolveLeafSizeDisplay(width, height), [width, height]);
83
- const handleOnClick = useCallback(() => onClick === null || onClick === void 0 ? void 0 : onClick(item.key), [item.key, onClick]);
84
- const leafContentRef = useRef(null);
85
- const hover = useHoverDirty(leafContentRef);
86
- const leafClassName = cx(css.leaf, css[`leaf-${runInfo.deltaType}`], sizeDisplay === 'small' && css.leafSmall, left === 0 && css.leafFirstCol);
87
- return (React.createElement("button", { type: "button", onClick: handleOnClick, ref: leafContentRef, style: { left, top, width, height }, className: leafClassName }, hover ? (React.createElement(LeafContentWithTooltip, { sizeDisplay: sizeDisplay, item: item, runInfo: runInfo, parentRef: leafContentRef })) : (React.createElement(LeafContent, { sizeDisplay: sizeDisplay, item: item, runInfo: runInfo }))));
55
+ const sizeDisplay = useMemo(() => resolveTileSizeDisplay(width, height), [width, height]);
56
+ const handleOnClick = useCallback((event) => {
57
+ event.stopPropagation();
58
+ onClick === null || onClick === void 0 ? void 0 : onClick(item.key);
59
+ }, [item.key, onClick]);
60
+ const contentRef = useRef(null);
61
+ const hover = useHoverDirty(contentRef);
62
+ const className = cx(css.tile, css[`tile-${runInfo.deltaType}`], sizeDisplay === 'small' && css.tileSizeSmall, sizeDisplay === 'default' && css.tileSizeDefault, left === PADDING_INNER && css.tileFirstCol);
63
+ return (React.createElement("div", { onClick: handleOnClick, role: "button", "aria-label": I18N.TILE_LABEL, ref: contentRef, style: { left, top, width, height }, className: className }, hover ? (React.createElement(TileContentWithTooltip, { label: label, sizeDisplay: sizeDisplay, item: item, runInfo: runInfo, parentRef: contentRef })) : (React.createElement(TileContent, { label: label, sizeDisplay: sizeDisplay, item: item, runInfo: runInfo }))));
64
+ };
65
+ const TileGroupTitleTooltipContent = (props) => {
66
+ const { title, runInfo, baselineDisplayValue } = props;
67
+ return (React.createElement(Stack, { space: "small", className: css.tileTooltip },
68
+ React.createElement("h3", { className: css.tileTooltipContentTitle },
69
+ React.createElement(FileName, { as: "code", name: title })),
70
+ React.createElement(RunInfo, { current: runInfo.displayValue, baseline: baselineDisplayValue, delta: runInfo.displayDeltaPercentage, deltaType: runInfo.deltaType })));
71
+ };
72
+ const TileGroupTitleContent = (props) => {
73
+ const { title, runInfo } = props;
74
+ return (React.createElement("div", { className: css.tileGroupTitleContent },
75
+ title && React.createElement("span", { className: css.tileGroupTitleText }, title),
76
+ runInfo && (React.createElement("span", { className: css.tileGroupTitleTotal },
77
+ runInfo.displayValue,
78
+ 'displayDelta' in runInfo && `(${runInfo.displayDeltaPercentage})`))));
79
+ };
80
+ const TileGroupTitleContentWithTooltip = (props) => {
81
+ const { parentRef, tooltipContent, ...restProps } = props;
82
+ const tooltipState = useTooltipStateWithMouseFollow({ parentRef });
83
+ return (React.createElement(React.Fragment, null,
84
+ React.createElement(TooltipAnchor, { state: tooltipState, className: css.tileContentTooltipAnchor },
85
+ React.createElement(TileGroupTitleContent, { ...restProps })),
86
+ React.createElement(Tooltip, { state: tooltipState, className: css.tooltip },
87
+ React.createElement(TooltipArrow, { state: tooltipState, size: 16, className: css.tileTooltipArrow }),
88
+ React.createElement(TileGroupTitleTooltipContent, { ...tooltipContent }))));
89
+ };
90
+ const TileGroupTitle = (props) => {
91
+ const { tooltipContent, ...restProps } = props;
92
+ const contentRef = useRef(null);
93
+ const hover = useHoverDirty(contentRef);
94
+ return (React.createElement("div", { className: css.tileGroupTitle, ref: contentRef }, hover ? (React.createElement(TileGroupTitleContentWithTooltip, { parentRef: contentRef, tooltipContent: tooltipContent, ...restProps })) : (React.createElement(TileGroupTitleContent, { ...restProps }))));
95
+ };
96
+ const TileGroup = (props) => {
97
+ const { title = '', total, id, childNodes, onItemClick, onGroupClick, left, top, width, height, absoluteLeft, absoluteTop, } = props;
98
+ const onClick = useCallback((event) => {
99
+ onGroupClick === null || onGroupClick === void 0 ? void 0 : onGroupClick(id);
100
+ event.stopPropagation();
101
+ }, [onGroupClick, id]);
102
+ const displaySize = useMemo(() => resolveTileGroupSizeDisplay(width || 0, height || 0), [width, height]);
103
+ const [runInfo, baselineDisplayValue, deltaType] = useMemo(() => {
104
+ if (!total) {
105
+ return [];
106
+ }
107
+ const resolvedRunInfo = getMetricRunInfo(METRIC_TYPE_CONFIGS.METRIC_TYPE_FILE_SIZE, total.current, total.baseline);
108
+ const resolvedBaselineDisplayValue = formatFileSize(total.baseline);
109
+ const resolvedDeltaType = resolveGroupDeltaType(resolvedRunInfo);
110
+ return [resolvedRunInfo, resolvedBaselineDisplayValue, resolvedDeltaType];
111
+ }, [total]);
112
+ const rootClassName = cx(css.tileGroup, css[`tileGroup--${deltaType}`], css[`tileGroup--${displaySize}`]);
113
+ const tooltipContent = {
114
+ title: id || title,
115
+ runInfo,
116
+ baselineDisplayValue,
117
+ };
118
+ if (title && displaySize === 'minimal') {
119
+ return (React.createElement("div", { onClick: onClick, role: "button", "aria-label": I18N.TILE_GROUP_LABEL, className: rootClassName, style: { left, top, width, height } },
120
+ React.createElement(TileGroupTitle, { tooltipContent: tooltipContent })));
121
+ }
122
+ if (title && displaySize === 'small') {
123
+ return (React.createElement("div", { onClick: onClick, role: "button", "aria-label": I18N.TILE_GROUP_LABEL, style: { left, top, width, height }, className: rootClassName },
124
+ React.createElement(TileGroupTitle, { title: title, tooltipContent: tooltipContent })));
125
+ }
126
+ return (React.createElement("div", { onClick: onClick, role: "button", "aria-label": I18N.TILE_GROUP_LABEL, className: cx(rootClassName, css.tileGroupSizeDefault), style: { left, top, width, height } },
127
+ React.createElement(TileGroupTitle, { title: title, runInfo: runInfo, tooltipContent: tooltipContent }), childNodes === null || childNodes === void 0 ? void 0 :
128
+ childNodes.map((childNode) => {
129
+ if ('children' in childNode) {
130
+ const groupData = childNode.data;
131
+ return (React.createElement(TileGroup, { title: groupData.label, total: groupData.total, id: groupData.id, childNodes: childNode.children, left: childNode.x0 - absoluteLeft, top: childNode.y0 - absoluteTop, absoluteLeft: childNode.x0, absoluteTop: childNode.y0, width: childNode.x1 - childNode.x0, height: childNode.y1 - childNode.y0, onItemClick: onItemClick, onGroupClick: onGroupClick, key: groupData.id }));
132
+ }
133
+ return (React.createElement(Tile, { data: childNode.data, left: childNode.x0 - absoluteLeft, top: childNode.y0 - absoluteTop, width: childNode.x1 - childNode.x0, height: childNode.y1 - childNode.y0, onClick: onItemClick, key: childNode.data.id }));
134
+ })));
88
135
  };
89
136
  function useMetricsTreemapHierarchy(params) {
90
- const { items, width, height } = params;
137
+ const { treeNodes, width, height, nested } = params;
91
138
  const treemapHierarchy = useMemo(() => {
92
- const children = items.map((item) => {
93
- const values = item.runs.map((run) => (run === null || run === void 0 ? void 0 : run.value) || 0);
94
- const value = Math.max(...values);
95
- return {
96
- id: item.key,
97
- value,
98
- item,
99
- };
100
- });
101
- const treemapData = {
102
- id: 'root',
103
- name: 'root',
104
- value: 0,
105
- children,
106
- };
107
- const customHierarchy = hierarchy(treemapData);
139
+ const customHierarchy = hierarchy(treeNodes);
108
140
  customHierarchy.sum((node) => node.value);
109
141
  customHierarchy.sort((a, b) => b.value - a.value);
110
142
  return customHierarchy;
111
- }, [items]);
112
- const cells = useMemo(() => {
113
- const createTremapLayout = treemap()
143
+ }, [treeNodes]);
144
+ const treemapNodes = useMemo(() => {
145
+ let createTremapLayout = treemap()
114
146
  .size([width, height])
115
147
  .tile(treemapSquarify.ratio(SQUARIFY_RATIO))
116
- .paddingOuter(PADDING_OUTER)
117
- .paddingInner(PADDING_INNER);
118
- const tremapLayout = createTremapLayout(treemapHierarchy);
119
- return tremapLayout.leaves().filter((leaf) => Boolean(leaf.parent));
148
+ .paddingOuter(PADDING_OUTER);
149
+ if (nested) {
150
+ createTremapLayout = createTremapLayout
151
+ .padding(NESTED_PADDING)
152
+ .paddingLeft(NESTED_PADDING_LEFT)
153
+ .paddingTop(NESTED_PADDING_TOP);
154
+ }
155
+ else {
156
+ createTremapLayout = createTremapLayout.paddingInner(PADDING_INNER);
157
+ }
158
+ return createTremapLayout(treemapHierarchy);
120
159
  }, [height, width, treemapHierarchy]);
121
- return cells;
160
+ return treemapNodes;
122
161
  }
123
162
  export const MetricsTreemap = (props) => {
124
- const { className = '', items, onItemClick, emptyMessage = 'No data', ...restProps } = props;
163
+ var _a;
164
+ const { className = '', treeNodes, onItemClick, onGroupClick, emptyMessage = 'No data', nested = false, ...restProps } = props;
125
165
  const [containerRef, { width, height }] = useMeasure();
126
- const cells = useMetricsTreemapHierarchy({ items, width, height });
127
- return (React.createElement("div", { className: cx(css.root, className), ...restProps, ref: containerRef }, cells.length > 0 ? (React.createElement("div", { className: css.canvas }, cells.map((leaf) => {
128
- if (!leaf.parent) {
129
- return null;
130
- }
131
- return (React.createElement(Leaf, { data: leaf.data, left: leaf.x0, top: leaf.y0, width: leaf.x1 - leaf.x0, height: leaf.y1 - leaf.y0, onClick: onItemClick, key: leaf.id }));
132
- }))) : (React.createElement("div", { className: css.emptyMessage },
166
+ const rootNode = useMetricsTreemapHierarchy({ treeNodes, width, height, nested });
167
+ return (React.createElement("div", { className: cx(css.root, nested && css.nested, className), ...restProps, ref: containerRef }, rootNode.children && ((_a = rootNode.children) === null || _a === void 0 ? void 0 : _a.length) > 0 ? (React.createElement("div", { className: css.canvas },
168
+ React.createElement(TileGroup, { title: nested ? rootNode.data.label : undefined, total: rootNode.data.total, id: rootNode.data.id, childNodes: rootNode.children, onItemClick: onItemClick, onGroupClick: onGroupClick, left: rootNode.x0, top: rootNode.y0, absoluteLeft: rootNode.x0, absoluteTop: rootNode.y0, width: rootNode.x1 - rootNode.x0, height: rootNode.y1 - rootNode.y0 }))) : (React.createElement("div", { className: css.emptyMessage },
133
169
  React.createElement("div", { className: css.emptyMessageWrapper }, emptyMessage)))));
134
170
  };
135
171
  //# sourceMappingURL=metrics-treemap.js.map