"use client"; import { parseAnsiLine, stripAnsi } from "@/lib/ansi"; import type { ExtensionStatusItem, ExtensionWidgetItem } from "@/lib/types"; import { ExtensionWidgets } from "./ExtensionWidgets"; export function sanitizeExtensionStatusText(text: string): string { return text .replace(/[\r\n\t]/g, " ") .replace(/ +/g, " ") .trim(); } export function formatExtensionStatusLine(statuses: ExtensionStatusItem[]): string { return [...statuses] .sort((a, b) => a.key.localeCompare(b.key)) .map(({ text }) => sanitizeExtensionStatusText(text)) .join(" "); } export function ExtensionStatusBar({ statuses, widgets = [], }: { statuses: ExtensionStatusItem[]; widgets?: ExtensionWidgetItem[]; }) { if (statuses.length === 0 && widgets.length === 0) return null; const statusLine = formatExtensionStatusLine(statuses); const plainStatusLine = stripAnsi(statusLine); return (