feat: allow user to drag-n-drop audio clip into audio tracks; added m4a support

This commit is contained in:
Xiaohan-Tian
2026-05-28 17:25:08 -07:00
parent c8af2ddcca
commit cd4d5847eb
8 changed files with 762 additions and 148 deletions
+18
View File
@@ -0,0 +1,18 @@
export const AUDIO_IMPORT_ACCEPTED_TYPES = ['.wav', '.mp3', '.ogg', '.flac', '.aac', '.m4a'] as const;
export function getAudioImportExtension(fileOrName: File | string): string {
const fileName = typeof fileOrName === 'string' ? fileOrName : fileOrName.name;
return `.${fileName.split('.').pop()?.toLowerCase() ?? ''}`;
}
export function isAcceptedAudioImportFile(file: File): boolean {
return AUDIO_IMPORT_ACCEPTED_TYPES.includes(getAudioImportExtension(file) as typeof AUDIO_IMPORT_ACCEPTED_TYPES[number]);
}
export function getAudioImportDecodeFailureMessage(fileName: string): string {
if (getAudioImportExtension(fileName) === '.m4a') {
return `Unable to import "${fileName}". This browser could not decode the file's audio codec. M4A import depends on browser support.`;
}
return `Unable to import "${fileName}". This browser could not decode the selected audio file.`;
}