@bundle-stats/ui 4.22.3 → 4.23.0-beta.10

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 (395) hide show
  1. package/lib/app/app.js +4 -0
  2. package/lib/app/app.js.map +1 -1
  3. package/lib/app/app.module.css +14 -5
  4. package/lib/app/header/header.module.css +1 -3
  5. package/lib/components/asset-name/asset-name.js +8 -7
  6. package/lib/components/asset-name/asset-name.js.map +1 -1
  7. package/lib/components/asset-name/asset-name.module.css +11 -10
  8. package/lib/components/bundle-assets/bundle-assets.js +4 -2
  9. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  10. package/lib/components/bundle-assets/bundle-assets.module.css +0 -12
  11. package/lib/components/bundle-assets/index.js +2 -1
  12. package/lib/components/bundle-assets/index.js.map +1 -1
  13. package/lib/components/bundle-assets-totals/bundle-assets-totals.js +4 -2
  14. package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  15. package/lib/components/bundle-modules/bundle-modules.js +5 -3
  16. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  17. package/lib/components/bundle-modules/bundle-modules.module.css +2 -16
  18. package/lib/components/bundle-modules/index.js +2 -1
  19. package/lib/components/bundle-modules/index.js.map +1 -1
  20. package/lib/components/bundle-packages/bundle-packages.js +5 -3
  21. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  22. package/lib/components/bundle-packages/bundle-packages.module.css +18 -22
  23. package/lib/components/delta/delta.js +3 -13
  24. package/lib/components/delta/delta.js.map +1 -1
  25. package/lib/components/delta/delta.module.css +13 -12
  26. package/lib/components/delta/index.js.map +1 -1
  27. package/lib/components/entry-info/entry-info.js +4 -2
  28. package/lib/components/entry-info/entry-info.js.map +1 -1
  29. package/lib/components/entry-info/entry-info.module.css +7 -2
  30. package/lib/components/index.js +3 -1
  31. package/lib/components/index.js.map +1 -1
  32. package/lib/components/insight-icon/insight-icon.module.css +6 -6
  33. package/lib/components/job-name/job-name.js +1 -2
  34. package/lib/components/job-name/job-name.js.map +1 -1
  35. package/lib/components/jobs-header/jobs-header.js +1 -1
  36. package/lib/components/jobs-header/jobs-header.js.map +1 -1
  37. package/lib/components/jobs-header/jobs-header.module.css +0 -1
  38. package/lib/components/metric-change-legend/index.js +18 -0
  39. package/lib/components/metric-change-legend/index.js.map +1 -0
  40. package/lib/components/metric-change-legend/metric-change-legend.js +91 -0
  41. package/lib/components/metric-change-legend/metric-change-legend.js.map +1 -0
  42. package/lib/components/metric-change-legend/metric-change-legend.module.css +80 -0
  43. package/lib/components/metric-run-info/metric-run-info.js +24 -8
  44. package/lib/components/metric-run-info/metric-run-info.js.map +1 -1
  45. package/lib/components/metrics-display-selector/metrics-display-selector.js +7 -9
  46. package/lib/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
  47. package/lib/components/metrics-display-selector/metrics-display-selector.module.css +0 -27
  48. package/lib/components/metrics-table/metrics-table.js +31 -20
  49. package/lib/components/metrics-table/metrics-table.js.map +1 -1
  50. package/lib/components/metrics-table/metrics-table.module.css +4 -12
  51. package/lib/components/metrics-table-header/metrics-table-header.js +6 -6
  52. package/lib/components/metrics-table-header/metrics-table-header.js.map +1 -1
  53. package/lib/components/metrics-table-header/metrics-table-header.module.css +8 -12
  54. package/lib/components/metrics-table-options/metrics-table-options.js +4 -5
  55. package/lib/components/metrics-table-options/metrics-table-options.js.map +1 -1
  56. package/lib/components/metrics-table-row-count/index.js +18 -0
  57. package/lib/components/metrics-table-row-count/index.js.map +1 -0
  58. package/lib/components/metrics-table-row-count/metrics-table-row-count.js +17 -0
  59. package/lib/components/metrics-table-row-count/metrics-table-row-count.js.map +1 -0
  60. package/lib/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  61. package/lib/components/metrics-table-title/metrics-table-title.js +1 -1
  62. package/lib/components/metrics-table-title/metrics-table-title.js.map +1 -1
  63. package/lib/components/metrics-treemap/metrics-treemap.constants.js +3 -1
  64. package/lib/components/metrics-treemap/metrics-treemap.constants.js.map +1 -1
  65. package/lib/components/metrics-treemap/metrics-treemap.js +46 -113
  66. package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -1
  67. package/lib/components/metrics-treemap/metrics-treemap.module.css +3 -274
  68. package/lib/components/metrics-treemap/metrics-treemap.utils.js +81 -16
  69. package/lib/components/metrics-treemap/metrics-treemap.utils.js.map +1 -1
  70. package/lib/components/metrics-treemap/tile/index.js +18 -0
  71. package/lib/components/metrics-treemap/tile/index.js.map +1 -0
  72. package/lib/components/metrics-treemap/tile/tile.js +79 -0
  73. package/lib/components/metrics-treemap/tile/tile.js.map +1 -0
  74. package/lib/components/metrics-treemap/tile/tile.module.css +145 -0
  75. package/lib/components/metrics-treemap/tile-group/index.js +18 -0
  76. package/lib/components/metrics-treemap/tile-group/index.js.map +1 -0
  77. package/lib/components/metrics-treemap/tile-group/tile-group.js +75 -0
  78. package/lib/components/metrics-treemap/tile-group/tile-group.js.map +1 -0
  79. package/lib/components/metrics-treemap/tile-group/tile-group.module.css +57 -0
  80. package/lib/components/metrics-treemap/tile-group-title/index.js +18 -0
  81. package/lib/components/metrics-treemap/tile-group-title/index.js.map +1 -0
  82. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.js +24 -0
  83. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.js.map +1 -0
  84. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.module.css +48 -0
  85. package/lib/components/run-info/run-info.js +26 -14
  86. package/lib/components/run-info/run-info.js.map +1 -1
  87. package/lib/components/run-info/run-info.module.css +35 -26
  88. package/lib/components/sort-button/sort-button.module.css +0 -2
  89. package/lib/components/summary/summary.js +10 -10
  90. package/lib/components/summary/summary.js.map +1 -1
  91. package/lib/components/summary/summary.module.css +60 -14
  92. package/lib/constants.js +13 -1
  93. package/lib/constants.js.map +1 -1
  94. package/lib/css/default.css +7 -4
  95. package/lib/css/variables.css +84 -60
  96. package/lib/layout/flex-stack/flex-stack.js +2 -2
  97. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  98. package/lib/layout/flex-stack/flex-stack.module.css +65 -10
  99. package/lib/query-state.js +6 -3
  100. package/lib/query-state.js.map +1 -1
  101. package/lib/ui/button/button.js +3 -2
  102. package/lib/ui/button/button.js.map +1 -1
  103. package/lib/ui/button/button.module.css +38 -27
  104. package/lib/ui/control-group/control-group.js +1 -1
  105. package/lib/ui/control-group/control-group.js.map +1 -1
  106. package/lib/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  107. package/lib/ui/dialog/dialog.js +7 -3
  108. package/lib/ui/dialog/dialog.js.map +1 -1
  109. package/lib/ui/dialog/dialog.module.css +27 -0
  110. package/lib/ui/dropdown/dropdown.js +13 -4
  111. package/lib/ui/dropdown/dropdown.js.map +1 -1
  112. package/lib/ui/dropdown/dropdown.module.css +60 -7
  113. package/lib/ui/filters/filters.js +28 -16
  114. package/lib/ui/filters/filters.js.map +1 -1
  115. package/lib/ui/filters/filters.module.css +3 -19
  116. package/lib/ui/hover-card/hover-card.js +7 -1
  117. package/lib/ui/hover-card/hover-card.js.map +1 -1
  118. package/lib/ui/hover-card/hover-card.module.css +18 -5
  119. package/lib/ui/input/input.module.css +2 -2
  120. package/lib/ui/table/table.module.css +12 -6
  121. package/lib/ui/tabs/tabs.module.css +13 -9
  122. package/lib/ui/tag/tag.module.css +0 -2
  123. package/lib/ui/textarea/textarea.module.css +2 -2
  124. package/lib/ui/toolbar/toolbar.js +2 -1
  125. package/lib/ui/toolbar/toolbar.js.map +1 -1
  126. package/lib/ui/toolbar/toolbar.module.css +0 -6
  127. package/lib/ui/tooltip/tooltip.js +6 -1
  128. package/lib/ui/tooltip/tooltip.js.map +1 -1
  129. package/lib/ui/tooltip/tooltip.module.css +12 -1
  130. package/lib/utils/index.js +1 -0
  131. package/lib/utils/index.js.map +1 -1
  132. package/lib/utils/portal.js +10 -0
  133. package/lib/utils/portal.js.map +1 -0
  134. package/lib-esm/app/app.js +5 -1
  135. package/lib-esm/app/app.js.map +1 -1
  136. package/lib-esm/app/app.module.css +14 -5
  137. package/lib-esm/app/header/header.module.css +1 -3
  138. package/lib-esm/components/asset-name/asset-name.js +8 -7
  139. package/lib-esm/components/asset-name/asset-name.js.map +1 -1
  140. package/lib-esm/components/asset-name/asset-name.module.css +11 -10
  141. package/lib-esm/components/bundle-assets/bundle-assets.js +4 -2
  142. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  143. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -12
  144. package/lib-esm/components/bundle-assets/index.js +2 -1
  145. package/lib-esm/components/bundle-assets/index.js.map +1 -1
  146. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +4 -2
  147. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  148. package/lib-esm/components/bundle-modules/bundle-modules.js +5 -3
  149. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  150. package/lib-esm/components/bundle-modules/bundle-modules.module.css +2 -16
  151. package/lib-esm/components/bundle-modules/index.js +2 -1
  152. package/lib-esm/components/bundle-modules/index.js.map +1 -1
  153. package/lib-esm/components/bundle-packages/bundle-packages.js +5 -3
  154. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  155. package/lib-esm/components/bundle-packages/bundle-packages.module.css +18 -22
  156. package/lib-esm/components/delta/delta.js +3 -13
  157. package/lib-esm/components/delta/delta.js.map +1 -1
  158. package/lib-esm/components/delta/delta.module.css +13 -12
  159. package/lib-esm/components/delta/index.js.map +1 -1
  160. package/lib-esm/components/entry-info/entry-info.js +4 -2
  161. package/lib-esm/components/entry-info/entry-info.js.map +1 -1
  162. package/lib-esm/components/entry-info/entry-info.module.css +7 -2
  163. package/lib-esm/components/index.js +1 -0
  164. package/lib-esm/components/index.js.map +1 -1
  165. package/lib-esm/components/insight-icon/insight-icon.module.css +6 -6
  166. package/lib-esm/components/job-name/job-name.js +1 -2
  167. package/lib-esm/components/job-name/job-name.js.map +1 -1
  168. package/lib-esm/components/jobs-header/jobs-header.js +1 -1
  169. package/lib-esm/components/jobs-header/jobs-header.js.map +1 -1
  170. package/lib-esm/components/jobs-header/jobs-header.module.css +0 -1
  171. package/lib-esm/components/metric-change-legend/index.js +2 -0
  172. package/lib-esm/components/metric-change-legend/index.js.map +1 -0
  173. package/lib-esm/components/metric-change-legend/metric-change-legend.js +84 -0
  174. package/lib-esm/components/metric-change-legend/metric-change-legend.js.map +1 -0
  175. package/lib-esm/components/metric-change-legend/metric-change-legend.module.css +80 -0
  176. package/lib-esm/components/metric-run-info/metric-run-info.js +24 -8
  177. package/lib-esm/components/metric-run-info/metric-run-info.js.map +1 -1
  178. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js +7 -9
  179. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
  180. package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +0 -27
  181. package/lib-esm/components/metrics-table/metrics-table.js +32 -20
  182. package/lib-esm/components/metrics-table/metrics-table.js.map +1 -1
  183. package/lib-esm/components/metrics-table/metrics-table.module.css +4 -12
  184. package/lib-esm/components/metrics-table-header/metrics-table-header.js +6 -6
  185. package/lib-esm/components/metrics-table-header/metrics-table-header.js.map +1 -1
  186. package/lib-esm/components/metrics-table-header/metrics-table-header.module.css +8 -12
  187. package/lib-esm/components/metrics-table-options/metrics-table-options.js +5 -6
  188. package/lib-esm/components/metrics-table-options/metrics-table-options.js.map +1 -1
  189. package/lib-esm/components/metrics-table-row-count/index.js +2 -0
  190. package/lib-esm/components/metrics-table-row-count/index.js.map +1 -0
  191. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.js +10 -0
  192. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.js.map +1 -0
  193. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  194. package/lib-esm/components/metrics-table-title/metrics-table-title.js +1 -1
  195. package/lib-esm/components/metrics-table-title/metrics-table-title.js.map +1 -1
  196. package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js +2 -0
  197. package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js.map +1 -1
  198. package/lib-esm/components/metrics-treemap/metrics-treemap.js +52 -120
  199. package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -1
  200. package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +3 -274
  201. package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js +80 -18
  202. package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js.map +1 -1
  203. package/lib-esm/components/metrics-treemap/tile/index.js +2 -0
  204. package/lib-esm/components/metrics-treemap/tile/index.js.map +1 -0
  205. package/lib-esm/components/metrics-treemap/tile/tile.js +40 -0
  206. package/lib-esm/components/metrics-treemap/tile/tile.js.map +1 -0
  207. package/lib-esm/components/metrics-treemap/tile/tile.module.css +145 -0
  208. package/lib-esm/components/metrics-treemap/tile-group/index.js +2 -0
  209. package/lib-esm/components/metrics-treemap/tile-group/index.js.map +1 -0
  210. package/lib-esm/components/metrics-treemap/tile-group/tile-group.js +35 -0
  211. package/lib-esm/components/metrics-treemap/tile-group/tile-group.js.map +1 -0
  212. package/lib-esm/components/metrics-treemap/tile-group/tile-group.module.css +57 -0
  213. package/lib-esm/components/metrics-treemap/tile-group-title/index.js +2 -0
  214. package/lib-esm/components/metrics-treemap/tile-group-title/index.js.map +1 -0
  215. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.js +17 -0
  216. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.js.map +1 -0
  217. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.module.css +48 -0
  218. package/lib-esm/components/run-info/run-info.js +26 -14
  219. package/lib-esm/components/run-info/run-info.js.map +1 -1
  220. package/lib-esm/components/run-info/run-info.module.css +35 -26
  221. package/lib-esm/components/sort-button/sort-button.module.css +0 -2
  222. package/lib-esm/components/summary/summary.js +11 -11
  223. package/lib-esm/components/summary/summary.js.map +1 -1
  224. package/lib-esm/components/summary/summary.module.css +60 -14
  225. package/lib-esm/constants.js +12 -0
  226. package/lib-esm/constants.js.map +1 -1
  227. package/lib-esm/css/default.css +7 -4
  228. package/lib-esm/css/variables.css +84 -60
  229. package/lib-esm/layout/flex-stack/flex-stack.js +3 -2
  230. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  231. package/lib-esm/layout/flex-stack/flex-stack.module.css +65 -10
  232. package/lib-esm/query-state.js +7 -4
  233. package/lib-esm/query-state.js.map +1 -1
  234. package/lib-esm/ui/button/button.js +3 -2
  235. package/lib-esm/ui/button/button.js.map +1 -1
  236. package/lib-esm/ui/button/button.module.css +38 -27
  237. package/lib-esm/ui/control-group/control-group.js +1 -1
  238. package/lib-esm/ui/control-group/control-group.js.map +1 -1
  239. package/lib-esm/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  240. package/lib-esm/ui/dialog/dialog.js +7 -3
  241. package/lib-esm/ui/dialog/dialog.js.map +1 -1
  242. package/lib-esm/ui/dialog/dialog.module.css +27 -0
  243. package/lib-esm/ui/dropdown/dropdown.js +11 -3
  244. package/lib-esm/ui/dropdown/dropdown.js.map +1 -1
  245. package/lib-esm/ui/dropdown/dropdown.module.css +60 -7
  246. package/lib-esm/ui/filters/filters.js +29 -17
  247. package/lib-esm/ui/filters/filters.js.map +1 -1
  248. package/lib-esm/ui/filters/filters.module.css +3 -19
  249. package/lib-esm/ui/hover-card/hover-card.js +7 -1
  250. package/lib-esm/ui/hover-card/hover-card.js.map +1 -1
  251. package/lib-esm/ui/hover-card/hover-card.module.css +18 -5
  252. package/lib-esm/ui/input/input.module.css +2 -2
  253. package/lib-esm/ui/table/table.module.css +12 -6
  254. package/lib-esm/ui/tabs/tabs.module.css +13 -9
  255. package/lib-esm/ui/tag/tag.module.css +0 -2
  256. package/lib-esm/ui/textarea/textarea.module.css +2 -2
  257. package/lib-esm/ui/toolbar/toolbar.js +2 -1
  258. package/lib-esm/ui/toolbar/toolbar.js.map +1 -1
  259. package/lib-esm/ui/toolbar/toolbar.module.css +0 -6
  260. package/lib-esm/ui/tooltip/tooltip.js +6 -1
  261. package/lib-esm/ui/tooltip/tooltip.js.map +1 -1
  262. package/lib-esm/ui/tooltip/tooltip.module.css +12 -1
  263. package/lib-esm/utils/index.js +1 -0
  264. package/lib-esm/utils/index.js.map +1 -1
  265. package/lib-esm/utils/portal.js +6 -0
  266. package/lib-esm/utils/portal.js.map +1 -0
  267. package/package.json +18 -18
  268. package/src/app/app.jsx +7 -1
  269. package/src/app/app.module.css +14 -5
  270. package/src/app/header/header.module.css +1 -3
  271. package/src/components/asset-name/asset-name.module.css +11 -10
  272. package/src/components/asset-name/asset-name.tsx +17 -14
  273. package/src/components/bundle-assets/bundle-assets.module.css +0 -12
  274. package/src/components/bundle-assets/bundle-assets.tsx +8 -1
  275. package/src/components/bundle-assets/index.tsx +3 -1
  276. package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +6 -4
  277. package/src/components/bundle-modules/bundle-modules.module.css +2 -16
  278. package/src/components/bundle-modules/bundle-modules.tsx +10 -3
  279. package/src/components/bundle-modules/index.tsx +3 -1
  280. package/src/components/bundle-packages/bundle-packages.jsx +14 -3
  281. package/src/components/bundle-packages/bundle-packages.module.css +18 -22
  282. package/src/components/delta/delta.module.css +13 -12
  283. package/src/components/delta/delta.tsx +32 -0
  284. package/src/components/entry-info/entry-info.module.css +7 -2
  285. package/src/components/entry-info/entry-info.tsx +9 -3
  286. package/src/components/index.ts +3 -0
  287. package/src/components/insight-icon/insight-icon.module.css +6 -6
  288. package/src/components/job-name/job-name.jsx +2 -3
  289. package/src/components/jobs-header/jobs-header.module.css +0 -1
  290. package/src/components/jobs-header/jobs-header.tsx +2 -2
  291. package/src/components/metric-change-legend/index.ts +1 -0
  292. package/src/components/metric-change-legend/metric-change-legend.module.css +80 -0
  293. package/src/components/metric-change-legend/metric-change-legend.stories.tsx +13 -0
  294. package/src/components/metric-change-legend/metric-change-legend.tsx +148 -0
  295. package/src/components/metric-run-info/metric-run-info.stories.tsx +9 -0
  296. package/src/components/metric-run-info/metric-run-info.tsx +39 -17
  297. package/src/components/metrics-display-selector/metrics-display-selector.module.css +0 -27
  298. package/src/components/metrics-display-selector/metrics-display-selector.tsx +25 -37
  299. package/src/components/metrics-table/metrics-table.module.css +4 -12
  300. package/src/components/metrics-table/metrics-table.tsx +70 -39
  301. package/src/components/metrics-table-header/metrics-table-header.module.css +8 -12
  302. package/src/components/metrics-table-header/metrics-table-header.tsx +5 -6
  303. package/src/components/metrics-table-options/metrics-table-options.tsx +13 -14
  304. package/src/components/metrics-table-row-count/index.ts +1 -0
  305. package/src/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  306. package/src/components/metrics-table-row-count/metrics-table-row-count.tsx +21 -0
  307. package/src/components/metrics-table-title/metrics-table-title.jsx +1 -1
  308. package/src/components/metrics-treemap/metrics-treemap.constants.ts +9 -0
  309. package/src/components/metrics-treemap/metrics-treemap.module.css +3 -274
  310. package/src/components/metrics-treemap/metrics-treemap.stories.utils.ts +46 -0
  311. package/src/components/metrics-treemap/metrics-treemap.tsx +123 -428
  312. package/src/components/metrics-treemap/metrics-treemap.utils.ts +161 -27
  313. package/src/components/metrics-treemap/tile/index.ts +1 -0
  314. package/src/components/metrics-treemap/tile/tile.module.css +145 -0
  315. package/src/components/metrics-treemap/tile/tile.stories.tsx +139 -0
  316. package/src/components/metrics-treemap/tile/tile.tsx +121 -0
  317. package/src/components/metrics-treemap/tile-group/index.ts +1 -0
  318. package/src/components/metrics-treemap/tile-group/tile-group.module.css +57 -0
  319. package/src/components/metrics-treemap/tile-group/tile-group.stories.tsx +163 -0
  320. package/src/components/metrics-treemap/tile-group/tile-group.tsx +177 -0
  321. package/src/components/metrics-treemap/tile-group-title/index.ts +1 -0
  322. package/src/components/metrics-treemap/tile-group-title/tile-group-title.module.css +48 -0
  323. package/src/components/metrics-treemap/tile-group-title/tile-group-title.stories.tsx +88 -0
  324. package/src/components/metrics-treemap/tile-group-title/tile-group-title.tsx +51 -0
  325. package/src/components/run-info/run-info.module.css +35 -26
  326. package/src/components/run-info/run-info.stories.tsx +16 -10
  327. package/src/components/run-info/run-info.tsx +132 -73
  328. package/src/components/sort-button/sort-button.module.css +0 -2
  329. package/src/components/summary/summary.module.css +60 -14
  330. package/src/components/summary/summary.tsx +50 -52
  331. package/src/constants.ts +13 -0
  332. package/src/css/default.css +7 -4
  333. package/src/css/variables.css +84 -60
  334. package/src/layout/flex-stack/flex-stack.module.css +65 -10
  335. package/src/layout/flex-stack/flex-stack.stories.tsx +68 -9
  336. package/src/layout/flex-stack/flex-stack.tsx +24 -4
  337. package/src/query-state.tsx +9 -4
  338. package/src/ui/button/button.module.css +38 -27
  339. package/src/ui/button/button.stories.tsx +1 -1
  340. package/src/ui/button/button.tsx +3 -1
  341. package/src/ui/control-group/control-group.tsx +1 -1
  342. package/src/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  343. package/src/ui/dialog/dialog.module.css +27 -0
  344. package/src/ui/dialog/dialog.stories.tsx +8 -0
  345. package/src/ui/dialog/dialog.tsx +16 -2
  346. package/src/ui/dropdown/dropdown.module.css +60 -7
  347. package/src/ui/dropdown/dropdown.stories.tsx +6 -0
  348. package/src/ui/dropdown/dropdown.tsx +17 -2
  349. package/src/ui/filters/filters.module.css +3 -19
  350. package/src/ui/filters/filters.tsx +131 -67
  351. package/src/ui/hover-card/hover-card.module.css +18 -5
  352. package/src/ui/hover-card/hover-card.tsx +7 -1
  353. package/src/ui/input/input.module.css +2 -2
  354. package/src/ui/table/table.module.css +12 -6
  355. package/src/ui/tabs/tabs.module.css +13 -9
  356. package/src/ui/tag/tag.module.css +0 -2
  357. package/src/ui/textarea/textarea.module.css +2 -2
  358. package/src/ui/toolbar/toolbar.jsx +4 -1
  359. package/src/ui/toolbar/toolbar.module.css +0 -6
  360. package/src/ui/tooltip/tooltip.module.css +12 -1
  361. package/src/ui/tooltip/tooltip.tsx +6 -1
  362. package/src/utils/index.ts +1 -0
  363. package/src/utils/portal.ts +9 -0
  364. package/types/components/delta/delta.d.ts +7 -21
  365. package/types/components/delta/index.d.ts +1 -1
  366. package/types/components/index.d.ts +3 -0
  367. package/types/components/metric-change-legend/index.d.ts +1 -0
  368. package/types/components/metric-change-legend/metric-change-legend.d.ts +4 -0
  369. package/types/components/metric-run-info/metric-run-info.d.ts +3 -6
  370. package/types/components/metrics-table/metrics-table.d.ts +2 -1
  371. package/types/components/metrics-table-row-count/index.d.ts +1 -0
  372. package/types/components/metrics-table-row-count/metrics-table-row-count.d.ts +7 -0
  373. package/types/components/metrics-treemap/metrics-treemap.constants.d.ts +2 -0
  374. package/types/components/metrics-treemap/metrics-treemap.utils.d.ts +16 -5
  375. package/types/components/metrics-treemap/tile/index.d.ts +1 -0
  376. package/types/components/metrics-treemap/tile/tile.d.ts +11 -0
  377. package/types/components/metrics-treemap/tile-group/index.d.ts +1 -0
  378. package/types/components/metrics-treemap/tile-group/tile-group.d.ts +20 -0
  379. package/types/components/metrics-treemap/tile-group-title/index.d.ts +1 -0
  380. package/types/components/metrics-treemap/tile-group-title/tile-group-title.d.ts +12 -0
  381. package/types/components/run-info/run-info.d.ts +16 -7
  382. package/types/constants.d.ts +12 -0
  383. package/types/layout/flex-stack/flex-stack.d.ts +6 -2
  384. package/types/ui/button/button.d.ts +1 -0
  385. package/types/ui/dialog/dialog.d.ts +3 -2
  386. package/types/ui/dropdown/dropdown.d.ts +4 -1
  387. package/types/ui/filters/filters.d.ts +2 -1
  388. package/types/utils/index.d.ts +1 -0
  389. package/types/utils/portal.d.ts +1 -0
  390. package/vitest.config.ts +4 -0
  391. package/lib/components/metrics-table-options/metrics-table-options.module.css +0 -15
  392. package/lib-esm/components/metrics-table-options/metrics-table-options.module.css +0 -15
  393. package/src/components/delta/delta.jsx +0 -22
  394. package/src/components/metrics-table-options/metrics-table-options.module.css +0 -15
  395. /package/src/components/delta/{index.js → index.ts} +0 -0
@@ -42,15 +42,14 @@ const react_use_1 = require("react-use");
42
42
  const classnames_1 = __importDefault(require("classnames"));
43
43
  const d3_1 = require("d3");
44
44
  const tooltip_1 = require("ariakit/tooltip");
45
- const utils_1 = require("@bundle-stats/utils");
45
+ const flex_stack_1 = require("../../layout/flex-stack");
46
46
  const stack_1 = require("../../layout/stack");
47
47
  const file_name_1 = require("../../ui/file-name");
48
- const delta_1 = require("../delta");
49
48
  const run_info_1 = require("../run-info");
50
49
  const metrics_treemap_constants_1 = require("./metrics-treemap.constants");
51
- const I18N = __importStar(require("./metrics-treemap.i18n"));
52
50
  const metrics_treemap_module_css_1 = __importDefault(require("./metrics-treemap.module.css"));
53
51
  const metrics_treemap_utils_1 = require("./metrics-treemap.utils");
52
+ const tile_group_1 = require("./tile-group");
54
53
  const TileTooltipContent = (props) => {
55
54
  const { item } = props;
56
55
  const currentRun = item.runs[0];
@@ -58,118 +57,23 @@ const TileTooltipContent = (props) => {
58
57
  return (react_1.default.createElement(stack_1.Stack, { space: "small", className: metrics_treemap_module_css_1.default.tileTooltipContent },
59
58
  react_1.default.createElement("h3", { className: metrics_treemap_module_css_1.default.tileTooltipContentTitle },
60
59
  react_1.default.createElement(file_name_1.FileName, { as: "code", name: item.label })),
61
- react_1.default.createElement(run_info_1.RunInfo, { current: currentRun.displayValue, delta: currentRun.displayDeltaPercentage, deltaType: currentRun.deltaType, baseline: baselineRun?.displayValue || '0B' })));
60
+ react_1.default.createElement(run_info_1.RunInfo, { current: currentRun.displayValue, delta: currentRun.displayDelta, deltaPercentage: currentRun.displayDeltaPercentage, deltaType: currentRun.deltaType, baseline: baselineRun?.displayValue || '0B' })));
62
61
  };
63
- const TileContent = (0, react_1.forwardRef)((props, ref) => {
64
- const { label, sizeDisplay, item, runInfo } = props;
65
- if (sizeDisplay === 'minimal') {
66
- return react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileContent, ref: ref });
67
- }
68
- const resolvedLabel = label || item.label;
69
- if (sizeDisplay === 'small') {
70
- return (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileContent, ref: ref },
71
- react_1.default.createElement("p", { className: metrics_treemap_module_css_1.default.tileContentLabel }, resolvedLabel)));
72
- }
73
- return (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileContent, ref: ref },
74
- react_1.default.createElement("p", { className: metrics_treemap_module_css_1.default.tileContentLabel }, label || item.label),
75
- react_1.default.createElement("p", { className: metrics_treemap_module_css_1.default.tileContentValue },
76
- react_1.default.createElement("span", { className: metrics_treemap_module_css_1.default.tileContentMetric }, runInfo.displayValue),
77
- react_1.default.createElement(delta_1.Delta, { className: metrics_treemap_module_css_1.default.tileContentDelta, displayValue: runInfo.displayDeltaPercentage, deltaType: runInfo.deltaType }))));
78
- });
79
- const TileContentWithTooltip = (props) => {
80
- const { label, sizeDisplay, item, runInfo, parentRef } = props;
81
- const tooltipState = (0, metrics_treemap_utils_1.useTooltipStateWithMouseFollow)({ parentRef });
82
- return (react_1.default.createElement(react_1.default.Fragment, null,
83
- react_1.default.createElement(tooltip_1.TooltipAnchor, { state: tooltipState, className: metrics_treemap_module_css_1.default.tileContentTooltipAnchor },
84
- react_1.default.createElement(TileContent, { label: label, sizeDisplay: sizeDisplay, item: item, runInfo: runInfo })),
85
- react_1.default.createElement(tooltip_1.Tooltip, { state: tooltipState, className: metrics_treemap_module_css_1.default.tooltip },
86
- react_1.default.createElement(tooltip_1.TooltipArrow, { state: tooltipState, size: 16, className: metrics_treemap_module_css_1.default.tileTooltipArrow }),
87
- react_1.default.createElement(TileTooltipContent, { item: item }))));
88
- };
89
- const Tile = (props) => {
90
- const { left, top, width, height, data, onClick } = props;
91
- const { item, label } = data;
92
- const runInfo = item.runs?.[0];
93
- const sizeDisplay = (0, react_1.useMemo)(() => (0, metrics_treemap_utils_1.resolveTileSizeDisplay)(width, height), [width, height]);
94
- const handleOnClick = (0, react_1.useCallback)((event) => {
95
- event.stopPropagation();
96
- onClick?.(item.key);
97
- }, [item.key, onClick]);
98
- const contentRef = (0, react_1.useRef)(null);
99
- const hover = (0, react_use_1.useHoverDirty)(contentRef);
100
- const className = (0, classnames_1.default)(metrics_treemap_module_css_1.default.tile, metrics_treemap_module_css_1.default[`tile-${runInfo.deltaType}`], sizeDisplay === 'small' && metrics_treemap_module_css_1.default.tileSizeSmall, sizeDisplay === 'default' && metrics_treemap_module_css_1.default.tileSizeDefault, left === metrics_treemap_constants_1.PADDING_INNER && metrics_treemap_module_css_1.default.tileFirstCol);
101
- return (react_1.default.createElement("div", { onClick: handleOnClick, role: "button", "aria-label": I18N.TILE_LABEL, ref: contentRef, style: { left, top, width, height }, className: className }, hover ? (react_1.default.createElement(TileContentWithTooltip, { label: label, sizeDisplay: sizeDisplay, item: item, runInfo: runInfo, parentRef: contentRef })) : (react_1.default.createElement(TileContent, { label: label, sizeDisplay: sizeDisplay, item: item, runInfo: runInfo }))));
102
- };
103
- const TileGroupTitleTooltipContent = (props) => {
104
- const { title, runInfo, baselineDisplayValue } = props;
105
- return (react_1.default.createElement(stack_1.Stack, { space: "small", className: metrics_treemap_module_css_1.default.tileTooltip },
62
+ const TileGroupTooltipContent = (props) => {
63
+ const { node } = props;
64
+ const title = node.id || node.label;
65
+ const groupRunInfo = node.total && (0, metrics_treemap_utils_1.getGroupRunInfo)(node.total);
66
+ return (react_1.default.createElement(stack_1.Stack, { space: "small", className: metrics_treemap_module_css_1.default.tileTooltipContent },
106
67
  react_1.default.createElement("h3", { className: metrics_treemap_module_css_1.default.tileTooltipContentTitle },
107
68
  react_1.default.createElement(file_name_1.FileName, { as: "code", name: title })),
108
- runInfo && (react_1.default.createElement(run_info_1.RunInfo, { current: runInfo.displayValue, baseline: baselineDisplayValue, delta: runInfo.displayDeltaPercentage, deltaType: runInfo.deltaType }))));
69
+ groupRunInfo && (react_1.default.createElement(run_info_1.RunInfo, { current: groupRunInfo.runInfo.displayValue, baseline: groupRunInfo.baselineDisplayValue, delta: groupRunInfo.runInfo.displayDeltaPercentage, deltaType: groupRunInfo.runInfo.deltaType }))));
109
70
  };
110
- const TileGroupTitleContent = (props) => {
111
- const { title, runInfo } = props;
112
- return (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileGroupTitleContent },
113
- title && react_1.default.createElement("span", { className: metrics_treemap_module_css_1.default.tileGroupTitleText }, title),
114
- runInfo && (react_1.default.createElement("span", { className: metrics_treemap_module_css_1.default.tileGroupTitleTotal },
115
- runInfo.displayValue,
116
- 'displayDelta' in runInfo && `(${runInfo.displayDeltaPercentage})`))));
117
- };
118
- const TileGroupTitleContentWithTooltip = (props) => {
119
- const { parentRef, tooltipContent, ...restProps } = props;
120
- const tooltipState = (0, metrics_treemap_utils_1.useTooltipStateWithMouseFollow)({ parentRef });
121
- return (react_1.default.createElement(react_1.default.Fragment, null,
122
- react_1.default.createElement(tooltip_1.TooltipAnchor, { state: tooltipState, className: metrics_treemap_module_css_1.default.tileContentTooltipAnchor },
123
- react_1.default.createElement(TileGroupTitleContent, { ...restProps })),
124
- react_1.default.createElement(tooltip_1.Tooltip, { state: tooltipState, className: metrics_treemap_module_css_1.default.tooltip },
125
- react_1.default.createElement(tooltip_1.TooltipArrow, { state: tooltipState, size: 16, className: metrics_treemap_module_css_1.default.tileTooltipArrow }),
126
- react_1.default.createElement(TileGroupTitleTooltipContent, { ...tooltipContent }))));
127
- };
128
- const TileGroupTitle = (props) => {
129
- const { tooltipContent, ...restProps } = props;
130
- const contentRef = (0, react_1.useRef)(null);
131
- const hover = (0, react_use_1.useHoverDirty)(contentRef);
132
- return (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileGroupTitle, ref: contentRef }, hover ? (react_1.default.createElement(TileGroupTitleContentWithTooltip, { parentRef: contentRef, tooltipContent: tooltipContent, ...restProps })) : (react_1.default.createElement(TileGroupTitleContent, { ...restProps }))));
133
- };
134
- const TileGroup = (props) => {
135
- const { title = '', total, id, childNodes, onItemClick, onGroupClick, left, top, width, height, absoluteLeft, absoluteTop, } = props;
136
- const onClick = (0, react_1.useCallback)((event) => {
137
- onGroupClick?.(id);
138
- event.stopPropagation();
139
- }, [onGroupClick, id]);
140
- const displaySize = (0, react_1.useMemo)(() => (0, metrics_treemap_utils_1.resolveTileGroupSizeDisplay)(width || 0, height || 0), [width, height]);
141
- const [runInfo, baselineDisplayValue, deltaType] = (0, react_1.useMemo)(() => {
142
- if (!total) {
143
- return [];
144
- }
145
- const resolvedRunInfo = (0, utils_1.getMetricRunInfo)(utils_1.METRIC_TYPE_CONFIGS.METRIC_TYPE_FILE_SIZE, total.current, total.baseline);
146
- const resolvedBaselineDisplayValue = (0, utils_1.formatFileSize)(total.baseline);
147
- const resolvedDeltaType = (0, metrics_treemap_utils_1.resolveGroupDeltaType)(resolvedRunInfo);
148
- return [resolvedRunInfo, resolvedBaselineDisplayValue, resolvedDeltaType];
149
- }, [total]);
150
- const rootClassName = (0, classnames_1.default)(metrics_treemap_module_css_1.default.tileGroup, metrics_treemap_module_css_1.default[`tileGroup--${deltaType}`], metrics_treemap_module_css_1.default[`tileGroup--${displaySize}`]);
151
- const tooltipContent = {
152
- title: id || title,
153
- runInfo,
154
- baselineDisplayValue,
155
- };
156
- if (title && displaySize === 'minimal') {
157
- return (react_1.default.createElement("div", { onClick: onClick, role: "button", "aria-label": I18N.TILE_GROUP_LABEL, className: rootClassName, style: { left, top, width, height } },
158
- react_1.default.createElement(TileGroupTitle, { tooltipContent: tooltipContent })));
71
+ const TreemapTooltipContent = (props) => {
72
+ const { node } = props;
73
+ if ('item' in node) {
74
+ return react_1.default.createElement(TileTooltipContent, { item: node.item });
159
75
  }
160
- if (title && displaySize === 'small') {
161
- return (react_1.default.createElement("div", { onClick: onClick, role: "button", "aria-label": I18N.TILE_GROUP_LABEL, style: { left, top, width, height }, className: rootClassName },
162
- react_1.default.createElement(TileGroupTitle, { title: title, tooltipContent: tooltipContent })));
163
- }
164
- return (react_1.default.createElement("div", { onClick: onClick, role: "button", "aria-label": I18N.TILE_GROUP_LABEL, className: (0, classnames_1.default)(rootClassName, metrics_treemap_module_css_1.default.tileGroupSizeDefault), style: { left, top, width, height } },
165
- react_1.default.createElement(TileGroupTitle, { title: title, runInfo: runInfo, tooltipContent: tooltipContent }),
166
- childNodes?.map((childNode) => {
167
- if ('children' in childNode) {
168
- const groupData = childNode.data;
169
- return (react_1.default.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 }));
170
- }
171
- return (react_1.default.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 }));
172
- })));
76
+ return react_1.default.createElement(TileGroupTooltipContent, { node: node });
173
77
  };
174
78
  function useMetricsTreemapHierarchy(params) {
175
79
  const { treeNodes, width, height, nested } = params;
@@ -201,9 +105,38 @@ const MetricsTreemap = (props) => {
201
105
  const { className = '', treeNodes, onItemClick, onGroupClick, emptyMessage = 'No data', nested = false, ...restProps } = props;
202
106
  const [containerRef, { width, height }] = (0, react_use_1.useMeasure)();
203
107
  const rootNode = useMetricsTreemapHierarchy({ treeNodes, width, height, nested });
204
- return (react_1.default.createElement("div", { className: (0, classnames_1.default)(metrics_treemap_module_css_1.default.root, nested && metrics_treemap_module_css_1.default.nested, className), ...restProps, ref: containerRef }, rootNode.children && rootNode.children?.length > 0 ? (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.canvas },
205
- react_1.default.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_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.emptyMessage },
206
- react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.emptyMessageWrapper }, emptyMessage)))));
108
+ const nodesIndex = (0, react_1.useMemo)(() => (0, metrics_treemap_utils_1.getTreemapNodesIndex)(treeNodes), [treeNodes]);
109
+ const { tooltipState, setPointer, hoveredNodeId, setHoveredNode, clearHoveredNode } = (0, metrics_treemap_utils_1.useTreemapTooltipState)();
110
+ const canvasRef = (0, react_1.useRef)(null);
111
+ const tooltipNode = hoveredNodeId === null ? null : nodesIndex.get(hoveredNodeId);
112
+ const handlePointerEvent = (0, react_1.useCallback)((event) => {
113
+ tooltipState.anchorRef.current = canvasRef.current;
114
+ setPointer(event.clientX, event.clientY);
115
+ const target = event.target?.closest(metrics_treemap_constants_1.NODE_ID_SELECTOR);
116
+ setHoveredNode(target?.dataset.treemapId ?? null);
117
+ }, [tooltipState, setPointer, setHoveredNode]);
118
+ const hasNodes = Boolean(rootNode.children && rootNode.children.length > 0);
119
+ (0, react_1.useEffect)(() => {
120
+ const canvas = canvasRef.current;
121
+ if (!canvas) {
122
+ return undefined;
123
+ }
124
+ canvas.addEventListener('mousemove', handlePointerEvent);
125
+ canvas.addEventListener('mouseover', handlePointerEvent);
126
+ canvas.addEventListener('mouseleave', clearHoveredNode);
127
+ return () => {
128
+ canvas.removeEventListener('mousemove', handlePointerEvent);
129
+ canvas.removeEventListener('mouseover', handlePointerEvent);
130
+ canvas.removeEventListener('mouseleave', clearHoveredNode);
131
+ };
132
+ }, [hasNodes, handlePointerEvent, clearHoveredNode]);
133
+ const canvasContent = (0, react_1.useMemo)(() => (react_1.default.createElement(tile_group_1.TileGroup, { title: nested ? rootNode.data.label : undefined, total: rootNode.data.total, id: rootNode.data.id, childNodes: rootNode.children, nested: nested, 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 })), [rootNode, width, height, nested, onItemClick, onGroupClick]);
134
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)(metrics_treemap_module_css_1.default.root, className), ...restProps, ref: containerRef },
135
+ hasNodes ? (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.canvas, ref: canvasRef }, canvasContent)) : (react_1.default.createElement(flex_stack_1.FlexStack, { alignItems: "center", justifyContent: "center", className: metrics_treemap_module_css_1.default.emptyMessage },
136
+ react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.emptyMessageWrapper }, emptyMessage))),
137
+ tooltipNode && (react_1.default.createElement(tooltip_1.Tooltip, { state: tooltipState, className: metrics_treemap_module_css_1.default.tooltip },
138
+ react_1.default.createElement(tooltip_1.TooltipArrow, { state: tooltipState, size: 16, className: metrics_treemap_module_css_1.default.tileTooltipArrow }),
139
+ react_1.default.createElement(TreemapTooltipContent, { node: tooltipNode })))));
207
140
  };
208
141
  exports.MetricsTreemap = MetricsTreemap;
209
142
  //# sourceMappingURL=metrics-treemap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics-treemap.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/metrics-treemap.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics-treemap.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/metrics-treemap.tsx"],"names":[],"mappings":"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"}
@@ -16,270 +16,6 @@
16
16
  background: var(--color-background);
17
17
  }
18
18
 
19
- /**
20
- * Tile group
21
- */
22
- .tileGroup {
23
- position: absolute;
24
- }
25
-
26
- .tileGroupTitle {
27
- width: 100%;
28
- cursor: default;
29
- }
30
-
31
- .tileGroupTitleContent {
32
- width: 100%;
33
- padding: var(--space-xxxsmall) 2px var(--space-xxxsmall) var(--space-xxsmall);
34
- display: flex;
35
- align-items: center;
36
- color: var(--color-text);
37
- font-family: var(--font-family-fixed);
38
- font-size: 10px;
39
- line-height: var(--space-small);
40
- overflow: hidden;
41
- white-space: nowrap;
42
- text-overflow: ellipsis;
43
- }
44
-
45
- .tileGroupTitleText,
46
- .tileGroupTitleTotal {
47
- flex: 0 0 auto;
48
- min-width: 0;
49
- }
50
-
51
- .tileGroupTitleTotal {
52
- margin-left: var(--space-xxsmall);
53
- color: var(--color-text-light);
54
- }
55
-
56
- .tileGroupTitle {
57
- transition: var(--transition-out);
58
- }
59
-
60
- .tileGroupTitle:hover .tileGroupTitleText {
61
- text-decoration: underline;
62
- transition: var(--transition-in);
63
- }
64
-
65
- /** Tile group size variation */
66
- .tileGroup {
67
- transition: var(--transition-out);
68
- transition-property: background-color, outline;
69
- border-radius: var(--radius-xsmall);
70
- }
71
-
72
- .tileGroup--minimal,
73
- .tileGroup--small {
74
- border-radius: calc(var(--radius-xsmall) / 2);
75
- }
76
-
77
- .tileGroup--minimal .tileGroupTitle,
78
- .tileGroup--small .tileGroupTitle {
79
- height: 100%; /* full height when title is missing or we do not render any children */
80
- }
81
-
82
- .tileGroup--minimal .tileGroupTitleContent,
83
- .tileGroup--small .tileGroupTitleContent {
84
- min-height: 100%;
85
- }
86
-
87
- /** Tile group nested variation */
88
- .nested .tileGroup {
89
- background-color: rgba(27, 26, 33, 0.03);
90
- outline: 1px solid rgba(255, 255, 255, 0.8);
91
- }
92
-
93
- .nested .tileGroup:has(> .tileGroupTitle:hover),
94
- .nested .tileGroup:has(> .tile:hover) {
95
- background-color: rgba(27, 26, 33, 0.06);
96
- outline: 1px solid rgba(255, 255, 255, 1);
97
- transition: var(--transition-in);
98
- transition-property: background-color, outline;
99
- }
100
-
101
- .nested .tileGroup--NEGATIVE {
102
- background-color: rgba(194, 31, 37, 0.04);
103
- }
104
-
105
- .nested .tileGroup--NEGATIVE:has(> .tileGroupTitle:hover),
106
- .nested .tileGroup--NEGATIVE:has(> .tile:hover) {
107
- background-color: rgba(194, 31, 37, 0.1);
108
- }
109
-
110
- .nested .tileGroup--POSITIVE {
111
- background-color: rgba(42, 147, 39, 0.04);
112
- }
113
-
114
- .nested .tileGroup--POSITIVE:has(> .tileGroupTitle:hover),
115
- .nested .tileGroup--POSITIVE:has(> .tile:hover) {
116
- background-color: rgba(42, 147, 39, 0.1);
117
- }
118
-
119
- /* reset bacground color when having a not changed group */
120
- .nested .tileGroup--POSITIVE > .tileGroup--NO_CHANGE,
121
- .nested .tileGroup--NEGATIVE > .tileGroup--NO_CHANGE {
122
- background-color: var(--color-background);
123
- background-image: linear-gradient(rgba(27, 26, 33, 0.1), rgba(27, 26, 33, 0.1));
124
- }
125
-
126
- .nested .tileGroup--POSITIVE > .tileGroup--NO_CHANGE:has(> .tileGroupTitle:hover),
127
- .nested .tileGroup--POSITIVE > .tileGroup--NO_CHANGE:has(> .tile:hover),
128
- .nested .tileGroup--NEGATIVE > .tileGroup--NO_CHANGE:has(> .tileGroupTitle:hover),
129
- .nested .tileGroup--NEGATIVE > .tileGroup--NEGATIVE > .tileGroup--NO_CHANGE:has(> .tile:hover) {
130
- background-color: var(--color-background);
131
- background-image: linear-gradient(rgba(27, 26, 33, 0.1), rgba(27, 26, 33, 0.1));
132
- }
133
-
134
- /** Leaf wrapper button */
135
- .tile {
136
- position: absolute;
137
- appearance: none;
138
- border: 0;
139
- border-radius: 0;
140
- padding: 0;
141
- border-radius: calc(var(--radius-xsmall) / 2);
142
- background: var(--color-background);
143
- display: flex;
144
- align-items: center;
145
- font-family: var(--font-family-fixed);
146
- font-size: var(--size-small);
147
- line-height: var(--line-height-heading);
148
- text-align: left;
149
- transition: var(--transition-out);
150
- transition-property: opacity, background-color;
151
- }
152
-
153
- .tile::before {
154
- content: '';
155
- display: block;
156
- position: absolute;
157
- z-index: 1;
158
- left: 0;
159
- top: 0;
160
- width: 100%;
161
- height: 100%;
162
- background-color: currentColor;
163
- }
164
-
165
- .tileContent {
166
- position: relative;
167
- z-index: 1;
168
- width: 100%;
169
- height: 100%;
170
- display: flex;
171
- flex-flow: column;
172
- justify-content: center;
173
- padding: var(--space-xxsmall) var(--space-xxsmall);
174
- gap: var(--space-xxxsmall);
175
- line-height: var(--line-height-heading);
176
- }
177
-
178
- /** Align label to other elements on the first column cells */
179
- .tileFirstCol .tileContent {
180
- padding-left: var(--space-small);
181
- }
182
-
183
- .tileContentLabel {
184
- flex: 0 1 auto;
185
- width: 100%;
186
- min-width: 0;
187
- line-height: var(--line-height-heading);
188
- max-height: calc(2em * var(--line-height-heading)); /* render max 2 rows */
189
- overflow-wrap: break-word;
190
- word-wrap: break-word;
191
- word-break: break-all;
192
- word-break: break-word;
193
- hyphens: auto;
194
- white-space: normal;
195
- overflow: hidden;
196
- }
197
-
198
- .tileContentValue {
199
- flex: 0 0 auto;
200
- max-width: calc(100% + var(--space-xxsmall));
201
- white-space: nowrap;
202
- overflow: hidden;
203
- }
204
-
205
- .tileContentMetric {
206
- font-weight: bold;
207
- }
208
-
209
- .tileContentDelta {
210
- margin-left: var(--space-xxxsmall);
211
- }
212
-
213
- /** Tile size variation */
214
- .tileSizeSmall .tileContent {
215
- padding: var(--space-xxxsmall);
216
- font-size: 10px;
217
- }
218
-
219
- .tileSizeSmall .tileContentLabel {
220
- margin-top: 0;
221
- }
222
-
223
- /** Tile diff variation */
224
- .tile {
225
- outline: 1px solid rgba(255, 255, 255, 1);
226
- color: var(--color-text);
227
- }
228
-
229
- .tile::before {
230
- color: var(--color-highlight);
231
- transition: var(--transition-out);
232
- transition-property: opacity;
233
- opacity: 0.6;
234
- }
235
-
236
- .tile:hover::before {
237
- transition: var(--transition-in);
238
- transition-property: opacity;
239
- opacity: 0.4;
240
- }
241
-
242
- .tile:hover .tileContentLabel {
243
- text-decoration: underline;
244
- }
245
-
246
- .tile-NO_CHANGE {
247
- color: var(--color-text-light);
248
- }
249
-
250
- .tile-NO_CHANGE::before {
251
- color: var(--color-gray-50);
252
- opacity: 0.4;
253
- }
254
-
255
- .tile-NO_CHANGE:hover::before {
256
- opacity: 0.2;
257
- }
258
-
259
- .tile-HIGH_NEGATIVE::before {
260
- color: var(--color-red-100);
261
- }
262
-
263
- .tile-NEGATIVE::before {
264
- color: var(--color-red-50);
265
- }
266
-
267
- .tile-LOW_NEGATIVE::before {
268
- color: var(--color-red-50);
269
- }
270
-
271
- .tile-LOW_POSITIVE::before {
272
- color: var(--color-green-50);
273
- }
274
-
275
- .tile-POSITIVE::before {
276
- color: var(--color-green-50);
277
- }
278
-
279
- .tile-HIGH_POSITIVE::before {
280
- color: var(--color-green-100);
281
- }
282
-
283
19
  /** empty message */
284
20
  .emptyMessage {
285
21
  position: absolute;
@@ -287,9 +23,6 @@
287
23
  top: 0;
288
24
  width: 100%;
289
25
  height: 100%;
290
- display: flex;
291
- align-items: center;
292
- justify-content: center;
293
26
  }
294
27
 
295
28
  .emptyMessageWrapper {
@@ -298,13 +31,8 @@
298
31
  }
299
32
 
300
33
  /** tooltip */
301
- .tileContentTooltipAnchor {
302
- width: 100%;
303
- height: 100%;
304
- }
305
-
306
34
  .tooltip {
307
- z-index: var(--layer-high);
35
+ z-index: var(--layer-overlay);
308
36
  padding: var(--space-xsmall) var(--space-small);
309
37
  border-radius: var(--radius-medium);
310
38
  width: calc(100vw - 2 * var(--space-small));
@@ -326,7 +54,8 @@
326
54
  font-size: var(--size-small);
327
55
  }
328
56
 
329
- /* prevent tooltip portal wrapper from capturing events */
57
+ /* prevent the tooltip portal wrapper from capturing pointer events - the
58
+ treemap relies on pointer events reaching the canvas to track the hovered cell */
330
59
  div[role='presentation']:has(.tooltip) {
331
60
  pointer-events: none;
332
61
  }
@@ -2,12 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTreemapNodes = getTreemapNodes;
4
4
  exports.getTreemapNodesGroupedByPath = getTreemapNodesGroupedByPath;
5
+ exports.getTreemapNodesIndex = getTreemapNodesIndex;
5
6
  exports.resolveGroupDeltaType = resolveGroupDeltaType;
7
+ exports.getGroupRunInfo = getGroupRunInfo;
6
8
  exports.resolveTileGroupSizeDisplay = resolveTileGroupSizeDisplay;
7
9
  exports.resolveTileSizeDisplay = resolveTileSizeDisplay;
8
- exports.useTooltipStateWithMouseFollow = useTooltipStateWithMouseFollow;
10
+ exports.useTreemapTooltipState = useTreemapTooltipState;
9
11
  const react_1 = require("react");
10
- const react_use_1 = require("react-use");
11
12
  const tooltip_1 = require("ariakit/tooltip");
12
13
  const utils_1 = require("@bundle-stats/utils");
13
14
  const metrics_treemap_constants_1 = require("./metrics-treemap.constants");
@@ -105,6 +106,17 @@ function getTreemapNodesGroupedByPath(items) {
105
106
  total,
106
107
  };
107
108
  }
109
+ function getTreemapNodesIndex(node, index = new Map()) {
110
+ index.set(node.id, node);
111
+ node.children.forEach((childNode) => {
112
+ if ('children' in childNode) {
113
+ getTreemapNodesIndex(childNode, index);
114
+ return;
115
+ }
116
+ index.set(childNode.id, childNode);
117
+ });
118
+ return index;
119
+ }
108
120
  function resolveGroupDeltaType(metricRunInfo) {
109
121
  if (!metricRunInfo) {
110
122
  return utils_1.DeltaType.NO_CHANGE;
@@ -118,6 +130,14 @@ function resolveGroupDeltaType(metricRunInfo) {
118
130
  }
119
131
  return utils_1.DeltaType.NO_CHANGE;
120
132
  }
133
+ function getGroupRunInfo(total) {
134
+ const runInfo = (0, utils_1.getMetricRunInfo)(utils_1.METRIC_TYPE_CONFIGS.METRIC_TYPE_FILE_SIZE, total.current, total.baseline);
135
+ return {
136
+ runInfo,
137
+ baselineDisplayValue: (0, utils_1.formatFileSize)(total.baseline),
138
+ deltaType: resolveGroupDeltaType(runInfo),
139
+ };
140
+ }
121
141
  const PADDING_TOP = 8;
122
142
  const PADDING_BOTTOM = 8;
123
143
  const PADDING_LEFT = 8;
@@ -151,23 +171,68 @@ function resolveTileSizeDisplay(width, height) {
151
171
  }
152
172
  return 'default';
153
173
  }
154
- function useTooltipStateWithMouseFollow(options) {
155
- const { parentRef, gutter = 16, timeout = 240 } = options;
156
- const pointer = (0, react_use_1.useMouseHovered)(parentRef, { whenHovered: true });
174
+ function useTreemapTooltipState(options = {}) {
175
+ const { gutter = 16, timeout = 240, hideTimeout = timeout } = options;
176
+ const pointerRef = (0, react_1.useRef)(null);
177
+ const frameRef = (0, react_1.useRef)(0);
178
+ const hideTimeoutRef = (0, react_1.useRef)(0);
157
179
  const getAnchorRect = (0, react_1.useCallback)(() => {
158
- if (pointer.docX === 0 && pointer.docY === 0 && pointer.elW === 0 && pointer.elH === 0) {
180
+ const pointer = pointerRef.current;
181
+ if (!pointer) {
159
182
  return null;
160
183
  }
161
- const newRect = {
162
- x: pointer.docX - (document?.defaultView?.scrollX ?? 0),
163
- y: pointer.docY - (document?.defaultView?.scrollY ?? 0),
164
- w: 1,
165
- h: 1,
166
- };
167
- return newRect;
168
- }, [pointer.docX, pointer.docY]);
184
+ return { x: pointer.x, y: pointer.y, w: 1, h: 1 };
185
+ }, []);
169
186
  const tooltipState = (0, tooltip_1.useTooltipState)({ gutter, getAnchorRect, timeout });
170
- (0, react_use_1.useDebounce)(tooltipState.render, 10, [pointer.docX, pointer.docY]);
171
- return tooltipState;
187
+ const { mounted, render, show, hide } = tooltipState;
188
+ const [hoveredNodeId, setHoveredNodeId] = (0, react_1.useState)(null);
189
+ const hoveredNodeIdRef = (0, react_1.useRef)(null);
190
+ (0, react_1.useEffect)(() => () => {
191
+ cancelAnimationFrame(frameRef.current);
192
+ window.clearTimeout(hideTimeoutRef.current);
193
+ }, []);
194
+ const setPointer = (0, react_1.useCallback)((x, y) => {
195
+ pointerRef.current = { x, y };
196
+ if (!mounted || frameRef.current) {
197
+ return;
198
+ }
199
+ frameRef.current = requestAnimationFrame(() => {
200
+ frameRef.current = 0;
201
+ render();
202
+ });
203
+ }, [mounted, render]);
204
+ const commitHoveredNode = (0, react_1.useCallback)((nodeId) => {
205
+ hoveredNodeIdRef.current = nodeId;
206
+ setHoveredNodeId(nodeId);
207
+ if (nodeId === null) {
208
+ hide();
209
+ return;
210
+ }
211
+ show();
212
+ }, [hide, show]);
213
+ const setHoveredNode = (0, react_1.useCallback)((nodeId) => {
214
+ window.clearTimeout(hideTimeoutRef.current);
215
+ hideTimeoutRef.current = 0;
216
+ if (nodeId === hoveredNodeIdRef.current) {
217
+ return;
218
+ }
219
+ if (nodeId !== null || !hideTimeout) {
220
+ commitHoveredNode(nodeId);
221
+ return;
222
+ }
223
+ hideTimeoutRef.current = window.setTimeout(() => {
224
+ hideTimeoutRef.current = 0;
225
+ commitHoveredNode(null);
226
+ }, hideTimeout);
227
+ }, [commitHoveredNode, hideTimeout]);
228
+ const clearHoveredNode = (0, react_1.useCallback)(() => {
229
+ window.clearTimeout(hideTimeoutRef.current);
230
+ hideTimeoutRef.current = 0;
231
+ if (hoveredNodeIdRef.current === null) {
232
+ return;
233
+ }
234
+ commitHoveredNode(null);
235
+ }, [commitHoveredNode]);
236
+ return { tooltipState, setPointer, hoveredNodeId, setHoveredNode, clearHoveredNode };
172
237
  }
173
238
  //# sourceMappingURL=metrics-treemap.utils.js.map