@bundle-stats/ui 4.13.0-beta.16 → 4.13.0-beta.18
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/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 +39 -7
- package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
- package/lib/components/bundle-assets-totals/bundle-assets-totals.js +4 -4
- package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
- package/lib/components/bundle-modules/bundle-modules.js +28 -7
- package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
- package/lib/components/bundle-packages/bundle-packages.js +39 -7
- package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
- 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 +3 -0
- package/lib/components/metrics-treemap/metrics-treemap.constants.js.map +1 -0
- package/lib/components/metrics-treemap/metrics-treemap.js +63 -44
- package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -1
- package/lib/components/metrics-treemap/metrics-treemap.module.css +60 -28
- package/lib/components/metrics-treemap/metrics-treemap.utils.js +70 -0
- package/lib/components/metrics-treemap/metrics-treemap.utils.js.map +1 -0
- package/lib/hooks/metrics-display-type.js +56 -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/ui/icon/icon.js +1 -0
- 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-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 +40 -8
- package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
- package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +5 -5
- package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
- package/lib-esm/components/bundle-modules/bundle-modules.js +29 -8
- package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
- package/lib-esm/components/bundle-packages/bundle-packages.js +40 -8
- package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
- 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 +2 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js.map +1 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.js +64 -45
- package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -1
- package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +60 -28
- package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js +65 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js.map +1 -0
- package/lib-esm/hooks/metrics-display-type.js +57 -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/ui/icon/icon.js +1 -0
- 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/package.json +7 -7
- 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 +76 -20
- package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +5 -4
- package/src/components/bundle-modules/bundle-modules.tsx +76 -16
- package/src/components/bundle-packages/bundle-packages.jsx +71 -16
- 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 +143 -0
- package/src/components/metrics-treemap/index.ts +1 -0
- package/src/components/metrics-treemap/metrics-treemap.constants.ts +43 -0
- package/src/components/metrics-treemap/metrics-treemap.module.css +60 -28
- package/src/components/metrics-treemap/metrics-treemap.stories.tsx +44 -10
- package/src/components/metrics-treemap/metrics-treemap.tsx +258 -90
- package/src/components/metrics-treemap/metrics-treemap.utils.ts +107 -0
- package/src/hooks/metrics-display-type.ts +87 -29
- package/src/hooks/search-params.js +1 -0
- package/src/ui/icon/icon.tsx +1 -0
- package/src/ui/input-search/input-search.tsx +1 -0
- 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 +15 -0
- package/types/components/metrics-treemap/metrics-treemap.d.ts +7 -5
- package/types/components/metrics-treemap/metrics-treemap.utils.d.ts +4 -0
- package/types/hooks/metrics-display-type.d.ts +8 -2
- package/types/ui/icon/icon.d.ts +2 -0
|
@@ -13,25 +13,56 @@
|
|
|
13
13
|
top: 0;
|
|
14
14
|
width: 100%;
|
|
15
15
|
height: 100%;
|
|
16
|
-
fill: var(--color-text);
|
|
17
|
-
font-family: var(--font-family);
|
|
18
16
|
background: var(--color-background);
|
|
19
17
|
}
|
|
20
18
|
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Tile group
|
|
21
|
+
*/
|
|
22
|
+
.tileGroup {
|
|
23
|
+
position: absolute;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.tileGroupTitle {
|
|
27
|
+
width: 100%;
|
|
28
|
+
padding: 2px var(--space-xxxsmall);
|
|
29
|
+
color: var(--color-text);
|
|
30
|
+
font-size: 10px;
|
|
31
|
+
line-height: 12px;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
white-space: nowrap;
|
|
34
|
+
text-overflow: ellipsis;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Tile group size variation */
|
|
38
|
+
.tileGroupSizeDefault {
|
|
39
|
+
transition: var(--ui-transition-in);
|
|
40
|
+
transition-property: left top width height;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Tile group nested variation */
|
|
44
|
+
.nested .tileGroup {
|
|
45
|
+
background: rgba(200, 200, 200, 0.1);
|
|
46
|
+
outline: 1px solid rgba(255, 255, 255, 0.6);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Update background for current tileGroup and its children */
|
|
50
|
+
.nested .tileGroup:has(> .tileGroupTitle:hover),
|
|
51
|
+
.nested .tileGroup:has(> .tileGroupTitle:hover) .tileGroup,
|
|
52
|
+
.nested .tileGroup:has(> .tile:hover),
|
|
53
|
+
.nested .tileGroup:has(> .tile:hover) .tileGroup {
|
|
54
|
+
background: rgba(200, 200, 200, 0.2);
|
|
25
55
|
}
|
|
26
56
|
|
|
27
57
|
/** Leaf wrapper button */
|
|
28
58
|
.tile {
|
|
29
59
|
position: absolute;
|
|
30
60
|
appearance: none;
|
|
61
|
+
outline: 1px solid rgba(255, 255, 255, 0.6);
|
|
31
62
|
border: 0;
|
|
32
63
|
border-radius: 0;
|
|
33
64
|
padding: 0;
|
|
34
|
-
background:
|
|
65
|
+
background: var(--color-background);
|
|
35
66
|
display: flex;
|
|
36
67
|
align-items: center;
|
|
37
68
|
font-family: var(--font-family-fixed);
|
|
@@ -54,16 +85,13 @@
|
|
|
54
85
|
color: var(--color-highlight);
|
|
55
86
|
transition: var(--ui-transition-out);
|
|
56
87
|
transition-property: opacity;
|
|
57
|
-
opacity: 0.
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.tile:hover {
|
|
61
|
-
transition: var(--ui-transition-in);
|
|
88
|
+
opacity: 0.8;
|
|
62
89
|
}
|
|
63
90
|
|
|
64
91
|
.tile:hover::before {
|
|
65
92
|
transition: var(--ui-transition-in);
|
|
66
|
-
|
|
93
|
+
transition-property: opacity;
|
|
94
|
+
opacity: 0.6;
|
|
67
95
|
}
|
|
68
96
|
|
|
69
97
|
.tileContent {
|
|
@@ -84,7 +112,7 @@
|
|
|
84
112
|
padding-left: var(--space-small);
|
|
85
113
|
}
|
|
86
114
|
|
|
87
|
-
.
|
|
115
|
+
.tileContentLabel {
|
|
88
116
|
flex: 0 1 auto;
|
|
89
117
|
width: 100%;
|
|
90
118
|
min-width: 0;
|
|
@@ -92,32 +120,37 @@
|
|
|
92
120
|
overflow: hidden;
|
|
93
121
|
}
|
|
94
122
|
|
|
95
|
-
.
|
|
123
|
+
.tileContentValue {
|
|
96
124
|
flex: 0 0 auto;
|
|
97
125
|
max-width: calc(100% + var(--space-xxsmall));
|
|
98
126
|
white-space: nowrap;
|
|
99
127
|
overflow: hidden;
|
|
100
128
|
}
|
|
101
129
|
|
|
102
|
-
.
|
|
130
|
+
.tileContentMetric {
|
|
103
131
|
font-weight: bold;
|
|
104
132
|
}
|
|
105
133
|
|
|
106
|
-
.
|
|
134
|
+
.tileContentDelta {
|
|
107
135
|
margin-left: var(--space-xxxsmall);
|
|
108
136
|
}
|
|
109
137
|
|
|
110
138
|
/** Tile size variation */
|
|
111
|
-
.
|
|
139
|
+
.tileSizeSmall .tileContent {
|
|
112
140
|
padding: var(--space-xxxsmall) var(--space-xxsmall);
|
|
113
141
|
gap: 0;
|
|
114
142
|
font-size: var(--size-xsmall);
|
|
115
143
|
}
|
|
116
144
|
|
|
117
|
-
.
|
|
145
|
+
.tileSizeSmall .tileContentLabel {
|
|
118
146
|
margin-top: 0;
|
|
119
147
|
}
|
|
120
148
|
|
|
149
|
+
.tileSizeDefault {
|
|
150
|
+
transition: var(--ui-transition-in);
|
|
151
|
+
transition-property: left top width height;
|
|
152
|
+
}
|
|
153
|
+
|
|
121
154
|
/** Tile diff variation */
|
|
122
155
|
.tile-NO_CHANGE {
|
|
123
156
|
color: var(--color-text-light);
|
|
@@ -125,11 +158,11 @@
|
|
|
125
158
|
|
|
126
159
|
.tile-NO_CHANGE::before {
|
|
127
160
|
color: var(--color-gray-50);
|
|
128
|
-
opacity: 0.
|
|
161
|
+
opacity: 0.5;
|
|
129
162
|
}
|
|
130
163
|
|
|
131
164
|
.tile-NO_CHANGE:hover::before {
|
|
132
|
-
opacity: 0.
|
|
165
|
+
opacity: 0.3;
|
|
133
166
|
}
|
|
134
167
|
|
|
135
168
|
.tile-HIGH_NEGATIVE::before {
|
|
@@ -193,17 +226,16 @@
|
|
|
193
226
|
pointer-events: none;
|
|
194
227
|
}
|
|
195
228
|
|
|
196
|
-
/* prevent tooltip portal wrapper from capturing events */
|
|
197
|
-
div[role="presentation"]:has(.tooltip) {
|
|
198
|
-
pointer-events: none;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
229
|
.tileTooltipArrow svg {
|
|
203
230
|
display: block;
|
|
204
231
|
fill: var(--color-background) !important;
|
|
205
232
|
}
|
|
206
233
|
|
|
207
234
|
.tileTooltipContentTitle {
|
|
208
|
-
font-size: var(--size-
|
|
235
|
+
font-size: var(--size-small);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* prevent tooltip portal wrapper from capturing events */
|
|
239
|
+
div[role="presentation"]:has(.tooltip) {
|
|
240
|
+
pointer-events: none;
|
|
209
241
|
}
|
|
@@ -2,22 +2,56 @@ import React from 'react';
|
|
|
2
2
|
import { Meta, StoryObj } from '@storybook/react';
|
|
3
3
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
4
4
|
import { action } from '@storybook/addon-actions';
|
|
5
|
+
import { createJobs } from '@bundle-stats/utils';
|
|
6
|
+
import * as webpack from '@bundle-stats/utils/lib-esm/webpack';
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
/* eslint-disable import/no-relative-packages */
|
|
9
|
+
import baselineData from '../../../../../fixtures/webpack-stats.baseline.json';
|
|
10
|
+
import currentData from '../../../../../fixtures/webpack-stats.current.json';
|
|
7
11
|
import moduleItemsFixture from '../../../../../fixtures/module-items.json';
|
|
8
|
-
|
|
12
|
+
/* eslint-enable import/no-relative-packages */
|
|
13
|
+
import { MetricsTreemap, getTreemapNodes, getTreemapNodesGroupedByPath } from '.';
|
|
9
14
|
|
|
10
|
-
|
|
15
|
+
const meta: Meta<typeof MetricsTreemap> = {
|
|
11
16
|
title: 'Components/MetricsTreemap',
|
|
12
17
|
component: MetricsTreemap,
|
|
13
|
-
} as Meta;
|
|
14
|
-
|
|
15
|
-
export const Default: StoryObj = {
|
|
16
|
-
render: (props: React.ComponentProps<typeof MetricsTreemap>) => (
|
|
17
|
-
<MetricsTreemap style={{ maxWidth: 'var(--max-width)' }} {...props} />
|
|
18
|
-
),
|
|
19
18
|
args: {
|
|
20
|
-
items: moduleItemsFixture,
|
|
21
19
|
onItemClick: action('CLICK'),
|
|
22
20
|
},
|
|
23
21
|
};
|
|
22
|
+
|
|
23
|
+
type Story = StoryObj<typeof meta>;
|
|
24
|
+
|
|
25
|
+
export default meta;
|
|
26
|
+
|
|
27
|
+
const MULTIPLE_JOBS = createJobs([{ webpack: currentData }, { webpack: baselineData }]);
|
|
28
|
+
|
|
29
|
+
export const Assets: Story = {
|
|
30
|
+
render: (props) => <MetricsTreemap style={{ maxWidth: 'var(--max-width)' }} {...props} />,
|
|
31
|
+
args: {
|
|
32
|
+
treeNodes: getTreemapNodes(webpack.compareBySection.assets(MULTIPLE_JOBS)),
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const AssetsNested: Story = {
|
|
37
|
+
render: (props) => <MetricsTreemap style={{ maxWidth: 'var(--max-width)' }} {...props} />,
|
|
38
|
+
args: {
|
|
39
|
+
treeNodes: getTreemapNodesGroupedByPath(webpack.compareBySection.assets(MULTIPLE_JOBS)),
|
|
40
|
+
nested: true,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const Modules: Story = {
|
|
45
|
+
render: (props) => <MetricsTreemap style={{ maxWidth: 'var(--max-width)' }} {...props} />,
|
|
46
|
+
args: {
|
|
47
|
+
treeNodes: getTreemapNodes(moduleItemsFixture),
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const ModulesNested: Story = {
|
|
52
|
+
render: (props) => <MetricsTreemap style={{ maxWidth: 'var(--max-width)' }} {...props} />,
|
|
53
|
+
args: {
|
|
54
|
+
treeNodes: getTreemapNodesGroupedByPath(moduleItemsFixture),
|
|
55
|
+
nested: true,
|
|
56
|
+
},
|
|
57
|
+
};
|