forked from BRETT/BRETT
20 lines
977 B
TypeScript
20 lines
977 B
TypeScript
// Windows/Browser liefern für manche Formate (z. B. .flac, .mp3) keinen
|
|
// MIME-Type — beim Drag&Drop kommt dann '' oder 'application/octet-stream'.
|
|
// Daher wird der Dateityp über MIME *oder* Endung geprüft.
|
|
|
|
export const MEDIA_FILE_EXT = /\.(avif|bmp|gif|jpe?g|png|svg|webp|m4v|mov|mp4|ogg|ogv|webm|flac|mp3)$/i
|
|
|
|
// Für den dataTypes-Check während dragover: dort sind nur die Item-Typen
|
|
// bekannt, keine Dateinamen — unbekannte Typen durchlassen und beim
|
|
// eigentlichen Drop per isMediaFile filtern
|
|
export function isMediaItemType(type: string): boolean {
|
|
return type === '' || type === 'application/octet-stream'
|
|
|| type.startsWith('image/') || type.startsWith('video/') || type.startsWith('audio/')
|
|
}
|
|
|
|
export function isMediaFile(file: File): boolean {
|
|
const t = file.type
|
|
if (t.startsWith('image/') || t.startsWith('video/') || t.startsWith('audio/')) return true
|
|
return (!t || t === 'application/octet-stream') && MEDIA_FILE_EXT.test(file.name)
|
|
}
|