delete key can remove zones

This commit is contained in:
2026-04-03 11:38:58 -06:00
parent 0237d685e5
commit 8a7c94d594
2 changed files with 24 additions and 6 deletions

View File

@ -44497,23 +44497,33 @@
"cutRanges": [ "cutRanges": [
{ {
"id": "cut_1", "id": "cut_1",
"start": 554.9, "start": 553.4962968404622,
"end": 561.6
},
{
"id": "cut_1",
"start": 553.4962968404622,
"end": 561.6 "end": 561.6
} }
], ],
"muteRanges": [ "muteRanges": [
{ {
"id": "mute_2", "id": "mute_2",
"start": 563.72, "start": 563.1481209350031,
"end": 571.5 "end": 571.5
}, },
{ {
"id": "mute_3", "id": "mute_3",
"start": 34.98, "start": 34.98,
"end": 50.14 "end": 50.14
},
{
"id": "mute_2",
"start": 563.1481209350031,
"end": 571.5
} }
], ],
"language": "en", "language": "en",
"createdAt": "2026-04-03T17:11:13.537Z", "createdAt": "2026-04-03T17:38:19.689Z",
"modifiedAt": "2026-04-03T17:11:13.537Z" "modifiedAt": "2026-04-03T17:38:19.689Z"
} }

View File

@ -695,6 +695,11 @@ export default function WaveformTimeline({ cutMode, muteMode }: { cutMode: boole
// Handle keyboard shortcuts for zone editing // Handle keyboard shortcuts for zone editing
useEffect(() => { useEffect(() => {
const handleKeyDown = (e: KeyboardEvent) => { const handleKeyDown = (e: KeyboardEvent) => {
const target = e.target as HTMLElement | null;
if (target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT')) {
return;
}
if (e.key === 'Escape') { if (e.key === 'Escape') {
setSelectedZone(null); setSelectedZone(null);
setEditingZone(null); setEditingZone(null);
@ -702,6 +707,8 @@ export default function WaveformTimeline({ cutMode, muteMode }: { cutMode: boole
} else if (e.key === 'Delete' || e.key === 'Backspace') { } else if (e.key === 'Delete' || e.key === 'Backspace') {
if (selectedZone) { if (selectedZone) {
e.preventDefault(); e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
if (selectedZone.type === 'cut') { if (selectedZone.type === 'cut') {
removeCutRange(selectedZone.id); removeCutRange(selectedZone.id);
} else { } else {
@ -714,8 +721,9 @@ export default function WaveformTimeline({ cutMode, muteMode }: { cutMode: boole
} }
}; };
window.addEventListener('keydown', handleKeyDown); // Capture phase ensures zone delete runs before app-level bubble shortcuts.
return () => window.removeEventListener('keydown', handleKeyDown); window.addEventListener('keydown', handleKeyDown, { capture: true });
return () => window.removeEventListener('keydown', handleKeyDown, { capture: true });
}, [selectedZone, removeCutRange, removeMuteRange]); }, [selectedZone, removeCutRange, removeMuteRange]);
if (!videoUrl) { if (!videoUrl) {