import MimeType from 'whatwg-mimetype'; import type { EditorProps } from '../components/core/Editor/Editor'; export function languageFromContentType( contentType: string | null, content: string | null = null, ): EditorProps['language'] { const justContentType = contentType?.split(';')[0] ?? contentType ?? ''; if (justContentType.includes('json')) { return 'json'; } else if (justContentType.includes('xml')) { return 'xml'; } else if (justContentType.includes('html')) { return detectFromContent(content, 'html'); } else if (justContentType.includes('javascript')) { return 'javascript'; } return detectFromContent(content, 'text'); } function detectFromContent( content: string | null, fallback: EditorProps['language'], ): EditorProps['language'] { if (content == null) return 'text'; const firstBytes = content.slice(0, 20).trim(); console.log("FIRST BYTES", firstBytes); if (firstBytes.startsWith('{') || firstBytes.startsWith('[')) { return 'json'; } else if ( firstBytes.toLowerCase().startsWith(' normalized === textType || normalized.endsWith(textType)); } export function getMimeTypeFromContentType(contentType: string): MimeType { try { return new MimeType(contentType); } catch { return new MimeType('text/plain'); } }