diff options
Diffstat (limited to 'apps/web/src/core/managers/timeline-manager.ts')
| -rw-r--r-- | apps/web/src/core/managers/timeline-manager.ts | 23 |
1 files changed, 18 insertions, 5 deletions
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<TimelineElement>; }>; }): void { + let changedOverlayCount = 0; for (const { elementId, updates: elementUpdates } of updates) { const existingOverlay = this.previewOverlay.get(elementId); - const mergedOverlay = { - ...existingOverlay, - ...elementUpdates, - } as Partial<TimelineElement>; - 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<TimelineElement>; + 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(); } |
