UNPKG

@roots/bud-dashboard

Version:

bud.js core module

33 lines (32 loc) 2.34 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 { longestNamedObjectLength } from '@roots/bud-dashboard/hooks/useLongestNamedObjectLength'; import { size as formatSize } from '@roots/bud-support/human-readable'; import { Box, Text } from '@roots/bud-support/ink'; import isNumber from '@roots/bud-support/isNumber'; const Entrypoints = ({ compact, compilation, displayEntrypoints, }) => { const compilationColor = useCompilationColor(compilation, `cyan`); if (!displayEntrypoints) return null; if (!compilation?.entrypoints) return null; const entrypoints = Object.values(compilation.entrypoints) .map(entrypoint => ({ ...entrypoint, assets: entrypoint.assets ?.filter(asset => !asset?.name?.includes(`hot-update`)) .map(asset => ({ ...(asset ?? {}), ...(compilation?.assets?.find(a => a?.name === asset?.name) ?? {}), })) ?? [], })) .filter(({ assets }) => assets.length > 0); const minWidth = entrypoints.reduce((longest, entry) => Math.max(entry.assets ? longestNamedObjectLength(entry.assets) : 0, longest), 0); if (entrypoints.length === 0) return null; return entrypoints.map(({ assets, name }, key) => (_jsx(Box, { flexDirection: "column", children: compact ? (_jsxs(Box, { flexDirection: "row", flexWrap: "wrap", justifyContent: "space-between", children: [name && _jsx(Text, { color: compilationColor, children: name }), _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 && isNumber(asset.size) ? asset.size : 0), 0))}` })] })] })) : (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { flexDirection: "row", flexWrap: "wrap", justifyContent: "space-between", children: name && name !== compilation.name && (_jsx(Text, { color: compilationColor, children: name })) }), _jsx(Assets, { assets: assets, minWidth: minWidth })] }, key)) }, key))); }; export { Entrypoints as default };