import { apiClient } from "@/lib/api/client" import { displayFileName, fileNameExtension } from "@/lib/drive/display-file-name" import { decodePathSegment } from "@/lib/drive/drive-url" const EXT_MIME: Record = { jpg: "image/jpeg", jpeg: "image/jpeg", png: "image/png", gif: "image/gif", webp: "image/webp", svg: "image/svg+xml", bmp: "image/bmp", avif: "image/avif", heic: "image/heic", heif: "image/heif", mp4: "video/mp4", webm: "video/webm", mov: "video/quicktime", mkv: "video/x-matroska", ogv: "video/ogg", m4v: "video/mp4", pdf: "application/pdf", mp3: "audio/mpeg", wav: "audio/wav", ogg: "audio/ogg", flac: "audio/flac", m4a: "audio/mp4", aac: "audio/aac", opus: "audio/opus", weba: "audio/webm", aiff: "audio/aiff", mid: "audio/midi", midi: "audio/midi", ico: "image/x-icon", tif: "image/tiff", tiff: "image/tiff", apng: "image/apng", jfif: "image/jpeg", } function mimeFromFileName(name: string): string | undefined { const ext = name.split(".").pop()?.toLowerCase() ?? "" return EXT_MIME[ext] } const AMBIGUOUS_SERVER_MIMES = new Set([ "application/octet-stream", "binary/octet-stream", "text/plain", "text/xml", "application/xml", ]) function normalizeMime(value: string): string { return value.toLowerCase().split(";")[0]?.trim() ?? "" } /** Pick MIME browsers accept for /