From 267a590d04c89ad0a74b682d8b575197e1a742fc Mon Sep 17 00:00:00 2001 From: Andrew Kordampalos Date: Mon, 23 Jun 2025 22:32:17 +0300 Subject: [PATCH] De-duplicate code --- apps/web/src/components/editor/timeline.tsx | 22 ++++++++++----------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/apps/web/src/components/editor/timeline.tsx b/apps/web/src/components/editor/timeline.tsx index 24169b6..e2c212d 100644 --- a/apps/web/src/components/editor/timeline.tsx +++ b/apps/web/src/components/editor/timeline.tsx @@ -290,18 +290,20 @@ export function Timeline() { } }; - // Deselect all clips when clicking empty timeline area and seek to clicked position + const handleSeekToPosition = (e: React.MouseEvent) => { + const rect = e.currentTarget.getBoundingClientRect(); + const clickX = e.clientX - rect.left; + const clickedTime = clickX / (50 * zoomLevel); + const clampedTime = Math.max(0, Math.min(duration, clickedTime)); + seek(clampedTime); + }; + const handleTimelineAreaClick = (e: React.MouseEvent) => { - // Only clear selection if the click target is the timeline background (not a child/clip) if (e.target === e.currentTarget) { clearSelectedClips(); // Calculate the clicked time position and seek to it - const rect = e.currentTarget.getBoundingClientRect(); - const clickX = e.clientX - rect.left; - const clickedTime = clickX / (50 * zoomLevel); - const clampedTime = Math.max(0, Math.min(duration, clickedTime)); - seek(clampedTime); + handleSeekToPosition(e); } }; @@ -500,11 +502,7 @@ export function Timeline() { }} onClick={(e) => { // Calculate the clicked time position and seek to it - const rect = e.currentTarget.getBoundingClientRect(); - const clickX = e.clientX - rect.left; - const clickedTime = clickX / (50 * zoomLevel); - const clampedTime = Math.max(0, Math.min(duration, clickedTime)); - seek(clampedTime); + handleSeekToPosition(e); }} > {/* Time markers */}