llama.cpp/tools/server/webui/src/lib/utils/file-preview.ts

37 lines
1.0 KiB
TypeScript

/**
* Gets a display label for a file type from various input formats
*
* Handles:
* - MIME types: 'application/pdf' → 'PDF'
* - AttachmentType values: 'PDF', 'AUDIO' → 'PDF', 'AUDIO'
* - File names: 'document.pdf' → 'PDF'
* - Unknown: returns 'FILE'
*
* @param input - MIME type, AttachmentType value, or file name
* @returns Formatted file type label (uppercase)
*/
export function getFileTypeLabel(input: string | undefined): string {
if (!input) return 'FILE';
// Handle MIME types (contains '/')
if (input.includes('/')) {
const subtype = input.split('/').pop();
if (subtype) {
// Handle special cases like 'vnd.ms-excel' → 'EXCEL'
if (subtype.includes('.')) {
return subtype.split('.').pop()?.toUpperCase() || 'FILE';
}
return subtype.toUpperCase();
}
}
// Handle file names (contains '.')
if (input.includes('.')) {
const ext = input.split('.').pop();
if (ext) return ext.toUpperCase();
}
// Handle AttachmentType or other plain strings
return input.toUpperCase();
}