From 011f51051c9750706978d6c89ce84dd15560c335 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Sat, 18 Apr 2026 01:40:18 +0200 Subject: feat: clip volume line and timeline waveform improvements --- apps/web/src/core/managers/timeline-manager.ts | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'apps/web/src/core/managers/timeline-manager.ts') diff --git a/apps/web/src/core/managers/timeline-manager.ts b/apps/web/src/core/managers/timeline-manager.ts index 898a7e89..c58128fb 100644 --- a/apps/web/src/core/managers/timeline-manager.ts +++ b/apps/web/src/core/managers/timeline-manager.ts @@ -712,18 +712,31 @@ export class TimelineManager { updates: Partial; }>; }): void { + let changedOverlayCount = 0; for (const { elementId, updates: elementUpdates } of updates) { const existingOverlay = this.previewOverlay.get(elementId); - const mergedOverlay = { - ...existingOverlay, - ...elementUpdates, - } as Partial; - this.previewOverlay.set(elementId, mergedOverlay); + const changed = Object.entries(elementUpdates).some(([key, value]) => { + return !Object.is( + existingOverlay?.[key as keyof TimelineElement], + value, + ); + }); + if (changed) { + changedOverlayCount += 1; + const mergedOverlay = { + ...existingOverlay, + ...elementUpdates, + } as Partial; + this.previewOverlay.set(elementId, mergedOverlay); + } } const committedTracks = this.editor.scenes.getActiveSceneOrNull()?.tracks; if (!committedTracks) { return; } + if (changedOverlayCount === 0) { + return; + } this.previewTracks = this.applyPreviewOverlay(committedTracks); this.notify(); } -- cgit v1.3.1