feat: enhance mobile responsiveness with collapsible controls and automation/effects bars
Added comprehensive mobile support for Phase 15 (Polish & Optimization): **Mobile Layout Enhancements:** - Track controls now collapsible on mobile with two states: - Collapsed: minimal controls with expand chevron, R/M/S buttons, horizontal level meter - Expanded: full height fader, pan control, all buttons - Track collapse buttons added to mobile view (left chevron for track collapse, right chevron for control collapse) - Master controls collapse button hidden on desktop (lg:hidden) - Automation and effects bars now available on mobile layout - Both bars collapsible with eye/eye-off icons, horizontally scrollable when zoomed - Mobile vertical stacking: controls → waveform → automation → effects per track **Bug Fixes:** - Fixed track controls and waveform container height matching on desktop - Fixed Modal component prop: isOpen → open in all dialog components - Fixed TypeScript null check for audioBuffer.duration - Fixed keyboard shortcut category: 'help' → 'view' **Technical Improvements:** - Consistent height calculation using trackHeight variable - Proper responsive breakpoints with Tailwind (sm:640px, lg:1024px) - Progressive disclosure pattern for mobile controls 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
|
||||
import { getAudioContext } from './context';
|
||||
import { checkFileMemoryLimit, type MemoryCheckResult } from '../utils/memory-limits';
|
||||
|
||||
export interface ImportOptions {
|
||||
convertToMono?: boolean;
|
||||
@@ -248,6 +249,15 @@ export function isSupportedAudioFormat(file: File): boolean {
|
||||
/\.(wav|mp3|ogg|webm|flac|aac|m4a|aiff|aif)$/i.test(file.name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check memory requirements for an audio file before decoding
|
||||
* @param file File to check
|
||||
* @returns Memory check result with warning if file is large
|
||||
*/
|
||||
export function checkAudioFileMemory(file: File): MemoryCheckResult {
|
||||
return checkFileMemoryLimit(file.size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format duration in seconds to MM:SS format
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user