@roots/bud-dashboard
Version:
bud.js core module
38 lines (37 loc) • 2.23 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "@roots/bud-support/jsx-runtime";
import Assets from '@roots/bud-dashboard/components/assets';
import { useCompilationColor } from '@roots/bud-dashboard/hooks/useCompilationColor';
import figures from '@roots/bud-support/figures';
import { size as formatSize } from '@roots/bud-support/human-readable';
import { Box, Text } from '@roots/bud-support/ink';
export default function CompilationAssets({ compact, compilation, displayAssets, limit = 5, }) {
const compilationColor = useCompilationColor(compilation, `cyan`);
if (!displayAssets)
return null;
if (!compilation?.assets)
return null;
const filteredAssets = [...compilation.assets]
.sort((a, b) => {
if (a.size < b.size)
return 1;
if (a.size > b.size)
return -1;
return 0;
})
.sort((a, b) => {
if (a.emitted && !b.emitted)
return -1;
if (!a.emitted && b.emitted)
return 1;
return 0;
})
.filter(asset => !asset.name?.endsWith(`js`) &&
!asset.name?.endsWith(`css`) &&
!asset.name?.endsWith(`map`) &&
!asset.name?.endsWith(`json`));
const assets = filteredAssets.splice(limit * -1);
if (assets.length === 0)
return null;
const hiddenCount = compilation.assets.length - assets.length;
return compact ? (_jsxs(Box, { flexDirection: "row", flexWrap: "wrap", justifyContent: "space-between", children: [_jsx(Text, { color: compilationColor, children: "assets" }), _jsxs(Box, { flexDirection: "row", flexWrap: "wrap", gap: 2, children: [_jsxs(Text, { children: [assets.length, " modules"] }), _jsx(Text, { children: `${formatSize(assets.reduce((acc, asset) => acc + asset.size, 0))}` })] })] })) : (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { flexDirection: "row", flexWrap: "wrap", justifyContent: "space-between", children: _jsx(Text, { color: compilationColor, children: `assets` }) }), _jsx(Assets, { assets: assets }), hiddenCount > 0 && (_jsx(Text, { dimColor: true, wrap: "truncate-end", children: ` ${figures.ellipsis} ${hiddenCount} additional ${hiddenCount > 1 ? `assets` : `asset`} not shown` }))] }));
}