UNPKG

@roots/bud-dashboard

Version:

bud.js core module

38 lines (37 loc) 2.23 kB
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` }))] })); }