From 8f35cf090c8fdbc06db62c247771fe4790c1fa8d Mon Sep 17 00:00:00 2001 From: moncef Date: Tue, 7 Apr 2026 11:40:39 +0100 Subject: [PATCH] feat: add zoomRegionUtils to calculate dominant zoom regions and handle smooth transitions between connected regions --- .../video-editor/videoPlayback/zoomRegionUtils.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/video-editor/videoPlayback/zoomRegionUtils.ts b/src/components/video-editor/videoPlayback/zoomRegionUtils.ts index 12acdbf..e9fd603 100644 --- a/src/components/video-editor/videoPlayback/zoomRegionUtils.ts +++ b/src/components/video-editor/videoPlayback/zoomRegionUtils.ts @@ -41,8 +41,16 @@ const DEFAULT_ZOOM_OUT_MS = TRANSITION_WINDOW_MS; const DEFAULT_ZOOM_IN_MS = ZOOM_IN_TRANSITION_WINDOW_MS; function getDurations(region: ZoomRegion) { - const zoomIn = region.zoomInDurationMs ?? DEFAULT_ZOOM_IN_MS; - const zoomOut = region.zoomOutDurationMs ?? DEFAULT_ZOOM_OUT_MS; + let zoomIn = region.zoomInDurationMs ?? DEFAULT_ZOOM_IN_MS; + let zoomOut = region.zoomOutDurationMs ?? DEFAULT_ZOOM_OUT_MS; + + const duration = region.endMs - region.startMs; + if (zoomIn + zoomOut > duration) { + const scale = duration / (zoomIn + zoomOut); + zoomIn *= scale; + zoomOut *= scale; + } + return { zoomIn, zoomOut }; }