@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.
- package/lib/app/app.js +4 -8
- package/lib/app/app.js.map +1 -1
- package/lib/app/app.module.css +2 -2
- package/lib/assets/icons.svg +70 -67
- package/lib/assets/icons.svg.js +14 -12
- package/lib/assets/icons.svg.js.map +1 -1
- package/lib/components/bundle-assets/bundle-assets.js +61 -26
- package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
- package/lib/components/bundle-assets/bundle-assets.module.css +0 -5
- package/lib/components/bundle-assets/index.js +3 -1
- package/lib/components/bundle-assets/index.js.map +1 -1
- package/lib/components/bundle-assets-totals/bundle-assets-totals.js +14 -12
- package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
- package/lib/components/bundle-modules/bundle-modules.i18n.js +1 -1
- package/lib/components/bundle-modules/bundle-modules.js +42 -15
- package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
- package/lib/components/bundle-modules/bundle-modules.module.css +0 -5
- package/lib/components/bundle-modules/bundle-modules.utils.js +2 -13
- package/lib/components/bundle-modules/bundle-modules.utils.js.map +1 -1
- package/lib/components/bundle-modules/index.js +2 -1
- package/lib/components/bundle-modules/index.js.map +1 -1
- package/lib/components/bundle-packages/bundle-packages.js +48 -9
- package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
- package/lib/components/bundle-packages/bundle-packages.module.css +0 -5
- package/lib/components/delta/delta.js +1 -1
- package/lib/components/delta/delta.js.map +1 -1
- package/lib/components/delta/delta.module.css +10 -1
- package/lib/components/jobs-header/jobs-header.module.css +0 -4
- package/lib/components/metrics-display-selector/metrics-display-selector.js +41 -4
- package/lib/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
- package/lib/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
- package/lib/components/metrics-treemap/index.js +4 -0
- package/lib/components/metrics-treemap/index.js.map +1 -1
- package/lib/components/metrics-treemap/metrics-treemap.constants.js +10 -0
- package/lib/components/metrics-treemap/metrics-treemap.constants.js.map +1 -0
- package/lib/components/metrics-treemap/metrics-treemap.i18n.js +6 -0
- package/lib/components/metrics-treemap/metrics-treemap.i18n.js.map +1 -0
- package/lib/components/metrics-treemap/metrics-treemap.js +131 -95
- package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -1
- package/lib/components/metrics-treemap/metrics-treemap.module.css +179 -54
- package/lib/components/metrics-treemap/metrics-treemap.utils.js +168 -0
- package/lib/components/metrics-treemap/metrics-treemap.utils.js.map +1 -0
- package/lib/components/module-info/module-info.js +1 -2
- package/lib/components/module-info/module-info.js.map +1 -1
- package/lib/components/run-info/run-info.module.css +7 -7
- package/lib/css/variables.css +14 -13
- package/lib/hooks/metrics-display-type.js +45 -24
- package/lib/hooks/metrics-display-type.js.map +1 -1
- package/lib/hooks/search-params.js +1 -0
- package/lib/hooks/search-params.js.map +1 -1
- package/lib/layout/box/box.module.css +4 -2
- package/lib/layout/flex-stack/flex-stack.js +3 -4
- package/lib/layout/flex-stack/flex-stack.js.map +1 -1
- package/lib/layout/flex-stack/flex-stack.module.css +19 -23
- package/lib/ui/button/button.js +5 -4
- package/lib/ui/button/button.js.map +1 -1
- package/lib/ui/button/button.module.css +55 -53
- package/lib/ui/dropdown/dropdown.js +2 -2
- package/lib/ui/dropdown/dropdown.js.map +1 -1
- package/lib/ui/filters/filters.js +2 -2
- package/lib/ui/filters/filters.js.map +1 -1
- package/lib/ui/filters/filters.module.css +8 -1
- package/lib/ui/hover-card/hover-card.js +1 -1
- package/lib/ui/hover-card/hover-card.js.map +1 -1
- package/lib/ui/icon/icon.js +2 -1
- package/lib/ui/icon/icon.js.map +1 -1
- package/lib/ui/input-search/input-search.js +1 -1
- package/lib/ui/input-search/input-search.js.map +1 -1
- package/lib/ui/loader/loader.js +1 -1
- package/lib/ui/loader/loader.js.map +1 -1
- package/lib/ui/table/table.module.css +30 -0
- package/lib/ui/tag/tag.module.css +3 -3
- package/lib/ui/toolbar/toolbar.module.css +1 -3
- package/lib/utils/colors.js +22 -0
- package/lib/utils/colors.js.map +1 -0
- package/lib/{utils.js → utils/components.js} +2 -17
- package/lib/utils/components.js.map +1 -0
- package/lib/utils/index.js +20 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/jobs.js +18 -0
- package/lib/utils/jobs.js.map +1 -0
- package/lib-esm/app/app.js +4 -8
- package/lib-esm/app/app.js.map +1 -1
- package/lib-esm/app/app.module.css +2 -2
- package/lib-esm/assets/icons.svg +70 -67
- package/lib-esm/assets/icons.svg.js +14 -12
- package/lib-esm/assets/icons.svg.js.map +1 -1
- package/lib-esm/components/bundle-assets/bundle-assets.js +62 -28
- package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
- package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -5
- package/lib-esm/components/bundle-assets/index.js +3 -1
- package/lib-esm/components/bundle-assets/index.js.map +1 -1
- package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +15 -13
- package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
- package/lib-esm/components/bundle-modules/bundle-modules.i18n.js +1 -1
- package/lib-esm/components/bundle-modules/bundle-modules.js +43 -16
- package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
- package/lib-esm/components/bundle-modules/bundle-modules.module.css +0 -5
- package/lib-esm/components/bundle-modules/bundle-modules.utils.js +1 -11
- package/lib-esm/components/bundle-modules/bundle-modules.utils.js.map +1 -1
- package/lib-esm/components/bundle-modules/index.js +3 -2
- package/lib-esm/components/bundle-modules/index.js.map +1 -1
- package/lib-esm/components/bundle-packages/bundle-packages.js +49 -10
- package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
- package/lib-esm/components/bundle-packages/bundle-packages.module.css +0 -5
- package/lib-esm/components/delta/delta.js +1 -1
- package/lib-esm/components/delta/delta.js.map +1 -1
- package/lib-esm/components/delta/delta.module.css +10 -1
- package/lib-esm/components/jobs-header/jobs-header.module.css +0 -4
- package/lib-esm/components/metrics-display-selector/metrics-display-selector.js +41 -4
- package/lib-esm/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
- package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
- package/lib-esm/components/metrics-treemap/index.js +1 -0
- package/lib-esm/components/metrics-treemap/index.js.map +1 -1
- package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js +7 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js.map +1 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.i18n.js +3 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.i18n.js.map +1 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.js +134 -98
- package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -1
- package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +179 -54
- package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js +162 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js.map +1 -0
- package/lib-esm/components/module-info/module-info.js +1 -2
- package/lib-esm/components/module-info/module-info.js.map +1 -1
- package/lib-esm/components/run-info/run-info.module.css +7 -7
- package/lib-esm/css/variables.css +14 -13
- package/lib-esm/hooks/metrics-display-type.js +46 -24
- package/lib-esm/hooks/metrics-display-type.js.map +1 -1
- package/lib-esm/hooks/search-params.js +1 -0
- package/lib-esm/hooks/search-params.js.map +1 -1
- package/lib-esm/layout/box/box.module.css +4 -2
- package/lib-esm/layout/flex-stack/flex-stack.js +3 -4
- package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
- package/lib-esm/layout/flex-stack/flex-stack.module.css +19 -23
- package/lib-esm/ui/button/button.js +5 -4
- package/lib-esm/ui/button/button.js.map +1 -1
- package/lib-esm/ui/button/button.module.css +55 -53
- package/lib-esm/ui/dropdown/dropdown.js +2 -2
- package/lib-esm/ui/dropdown/dropdown.js.map +1 -1
- package/lib-esm/ui/filters/filters.js +2 -2
- package/lib-esm/ui/filters/filters.js.map +1 -1
- package/lib-esm/ui/filters/filters.module.css +8 -1
- package/lib-esm/ui/hover-card/hover-card.js +1 -1
- package/lib-esm/ui/hover-card/hover-card.js.map +1 -1
- package/lib-esm/ui/icon/icon.js +2 -1
- package/lib-esm/ui/icon/icon.js.map +1 -1
- package/lib-esm/ui/input-search/input-search.js +1 -1
- package/lib-esm/ui/input-search/input-search.js.map +1 -1
- package/lib-esm/ui/loader/loader.js +1 -1
- package/lib-esm/ui/loader/loader.js.map +1 -1
- package/lib-esm/ui/table/table.module.css +30 -0
- package/lib-esm/ui/tag/tag.module.css +3 -3
- package/lib-esm/ui/toolbar/toolbar.module.css +1 -3
- package/lib-esm/utils/colors.js +15 -0
- package/lib-esm/utils/colors.js.map +1 -0
- package/lib-esm/utils/components.js +16 -0
- package/lib-esm/utils/components.js.map +1 -0
- package/lib-esm/utils/index.js +4 -0
- package/lib-esm/utils/index.js.map +1 -0
- package/lib-esm/utils/jobs.js +11 -0
- package/lib-esm/utils/jobs.js.map +1 -0
- package/package.json +9 -9
- package/src/app/app.jsx +4 -12
- package/src/app/app.module.css +2 -2
- package/src/assets/icons/check.svg +4 -0
- package/src/assets/icons.svg +70 -67
- package/src/assets/icons.svg.jsx +12 -12
- package/src/components/bundle-assets/bundle-assets.jsx +147 -66
- package/src/components/bundle-assets/bundle-assets.module.css +0 -5
- package/src/components/bundle-assets/index.jsx +4 -0
- package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +53 -46
- package/src/components/bundle-modules/bundle-modules.i18n.ts +1 -1
- package/src/components/bundle-modules/bundle-modules.module.css +0 -5
- package/src/components/bundle-modules/bundle-modules.tsx +140 -56
- package/src/components/bundle-modules/bundle-modules.types.d.ts +2 -17
- package/src/components/bundle-modules/bundle-modules.utils.ts +7 -18
- package/src/components/bundle-modules/index.tsx +4 -3
- package/src/components/bundle-packages/bundle-packages.jsx +89 -20
- package/src/components/bundle-packages/bundle-packages.module.css +0 -5
- package/src/components/delta/delta.jsx +1 -1
- package/src/components/delta/delta.module.css +10 -1
- package/src/components/jobs-header/jobs-header.module.css +0 -4
- package/src/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
- package/src/components/metrics-display-selector/metrics-display-selector.stories.tsx +33 -0
- package/src/components/metrics-display-selector/metrics-display-selector.tsx +83 -25
- package/src/components/metrics-treemap/__tests__/metrics-treemap.utils.ts +188 -0
- package/src/components/metrics-treemap/index.ts +1 -0
- package/src/components/metrics-treemap/metrics-treemap.constants.ts +63 -0
- package/src/components/metrics-treemap/metrics-treemap.i18n.ts +2 -0
- package/src/components/metrics-treemap/metrics-treemap.module.css +179 -54
- package/src/components/metrics-treemap/metrics-treemap.stories.tsx +44 -10
- package/src/components/metrics-treemap/metrics-treemap.tsx +453 -184
- package/src/components/metrics-treemap/metrics-treemap.utils.ts +268 -0
- package/src/components/module-info/module-info.tsx +1 -1
- package/src/components/run-info/run-info.module.css +7 -7
- package/src/css/variables.css +14 -13
- package/src/hooks/metrics-display-type.ts +79 -29
- package/src/hooks/search-params.js +1 -0
- package/src/layout/box/box.module.css +4 -2
- package/src/layout/flex-stack/flex-stack.module.css +19 -23
- package/src/layout/flex-stack/flex-stack.tsx +2 -8
- package/src/ui/button/button.module.css +55 -53
- package/src/ui/button/button.stories.tsx +16 -9
- package/src/ui/button/button.tsx +8 -7
- package/src/ui/dropdown/dropdown.tsx +2 -3
- package/src/ui/filters/filters.module.css +8 -1
- package/src/ui/filters/filters.tsx +2 -3
- package/src/ui/hover-card/hover-card.tsx +1 -1
- package/src/ui/icon/icon.tsx +2 -1
- package/src/ui/input-search/input-search.tsx +1 -0
- package/src/ui/loader/loader.jsx +1 -1
- package/src/ui/table/table.module.css +30 -0
- package/src/ui/tag/tag.module.css +3 -3
- package/src/ui/toolbar/toolbar.module.css +1 -3
- package/src/utils/colors.ts +19 -0
- package/src/utils/components.tsx +19 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/jobs.ts +22 -0
- package/types/components/bundle-assets/bundle-assets.d.ts +1 -5
- package/types/components/bundle-modules/bundle-modules.d.ts +4 -2
- package/types/components/bundle-modules/bundle-modules.i18n.d.ts +1 -1
- package/types/components/bundle-modules/bundle-modules.utils.d.ts +3 -7
- package/types/components/bundle-modules/index.d.ts +2 -2
- package/types/components/delta/delta.d.ts +2 -2
- package/types/components/metrics-display-selector/metrics-display-selector.d.ts +3 -1
- package/types/components/metrics-treemap/index.d.ts +1 -0
- package/types/components/metrics-treemap/metrics-treemap.constants.d.ts +28 -0
- package/types/components/metrics-treemap/metrics-treemap.d.ts +7 -5
- package/types/components/metrics-treemap/metrics-treemap.i18n.d.ts +2 -0
- package/types/components/metrics-treemap/metrics-treemap.utils.d.ts +15 -0
- package/types/hooks/metrics-display-type.d.ts +8 -2
- package/types/ui/dropdown/dropdown.d.ts +0 -1
- package/types/ui/icon/icon.d.ts +4 -2
- package/types/ui/loader/loader.d.ts +2 -2
- package/types/utils/colors.d.ts +1 -0
- package/types/utils/components.d.ts +2 -0
- package/types/utils/index.d.ts +3 -0
- package/types/utils/jobs.d.ts +7 -0
- package/lib/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
- package/lib/utils.js.map +0 -1
- package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
- package/lib-esm/utils.js +0 -30
- package/lib-esm/utils.js.map +0 -1
- package/src/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
- package/src/utils.jsx +0 -38
- 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",
|
|
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"
|
|
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(
|
|
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":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/F,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,GAAG,MAAM,8BAA8B,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle-packages.js","sourceRoot":"","sources":["../../../src/components/bundle-packages/bundle-packages.jsx"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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
|
-
|
|
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
|
}
|
|
@@ -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 {
|
|
10
|
-
return (React.createElement(ControlGroup, {
|
|
11
|
-
|
|
12
|
-
|
|
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;
|
|
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
|
-
.
|
|
2
|
-
|
|
1
|
+
.buttonActive {
|
|
2
|
+
background: var(--color-highlight);
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 +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 @@
|
|
|
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 {
|
|
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
|
|
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
|
-
|
|
12
|
-
const
|
|
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.
|
|
37
|
-
React.createElement("h3", { className: css.
|
|
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
|
|
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.
|
|
27
|
+
return React.createElement("div", { className: css.tileContent, ref: ref });
|
|
45
28
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
React.createElement("
|
|
50
|
-
|
|
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
|
|
53
|
-
const { sizeDisplay, item, runInfo, parentRef } = props;
|
|
54
|
-
const
|
|
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.
|
|
72
|
-
React.createElement(
|
|
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.
|
|
75
|
-
React.createElement(
|
|
47
|
+
React.createElement(TooltipArrow, { state: tooltipState, size: 16, className: css.tileTooltipArrow }),
|
|
48
|
+
React.createElement(TileTooltipContent, { item: item }))));
|
|
76
49
|
};
|
|
77
|
-
const
|
|
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(() =>
|
|
83
|
-
const handleOnClick = useCallback(() =>
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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 {
|
|
137
|
+
const { treeNodes, width, height, nested } = params;
|
|
91
138
|
const treemapHierarchy = useMemo(() => {
|
|
92
|
-
const
|
|
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
|
-
}, [
|
|
112
|
-
const
|
|
113
|
-
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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
|
|
160
|
+
return treemapNodes;
|
|
122
161
|
}
|
|
123
162
|
export const MetricsTreemap = (props) => {
|
|
124
|
-
|
|
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
|
|
127
|
-
return (React.createElement("div", { className: cx(css.root, className), ...restProps, ref: containerRef },
|
|
128
|
-
|
|
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
|