summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-02-02 19:14:37 +0100
committerMaze Winther <mazewinther@gmail.com>2026-02-02 19:14:37 +0100
commite88a059222470d6b5e40baf1d81a314940a98955 (patch)
tree75ea5d3aaded536377a14ef517104787254d4dbe
parentc3f0d640ef366fe4d94ff995ee8fe5ef282b9c1e (diff)
downloadopencut-e88a059222470d6b5e40baf1d81a314940a98955.tar.gz
increase zoom of buttons + refactor
-rw-r--r--apps/web/src/components/editor/timeline/timeline-toolbar.tsx12
-rw-r--r--apps/web/src/constants/timeline-constants.tsx4
-rw-r--r--apps/web/src/lib/timeline/zoom-utils.ts4
3 files changed, 10 insertions, 10 deletions
diff --git a/apps/web/src/components/editor/timeline/timeline-toolbar.tsx b/apps/web/src/components/editor/timeline/timeline-toolbar.tsx
index 33cf83ae..6ac6fba5 100644
--- a/apps/web/src/components/editor/timeline/timeline-toolbar.tsx
+++ b/apps/web/src/components/editor/timeline/timeline-toolbar.tsx
@@ -51,11 +51,13 @@ export function TimelineToolbar({
setZoomLevel: ({ zoom }: { zoom: number }) => void;
}) {
const handleZoom = ({ direction }: { direction: "in" | "out" }) => {
- const zoomFactor = 1.25;
const newZoomLevel =
direction === "in"
- ? Math.min(TIMELINE_CONSTANTS.ZOOM_MAX, zoomLevel * zoomFactor)
- : Math.max(minZoom, zoomLevel / zoomFactor);
+ ? Math.min(
+ TIMELINE_CONSTANTS.ZOOM_MAX,
+ zoomLevel * TIMELINE_CONSTANTS.ZOOM_BUTTON_FACTOR,
+ )
+ : Math.max(minZoom, zoomLevel / TIMELINE_CONSTANTS.ZOOM_BUTTON_FACTOR);
setZoomLevel({ zoom: newZoomLevel });
};
@@ -297,7 +299,7 @@ function ToolbarRightSection({
type="button"
onClick={() => onZoom({ direction: "out" })}
>
- <HugeiconsIcon icon={SearchAddIcon} />
+ <HugeiconsIcon icon={SearchMinusIcon} />
</Button>
<Slider
className="w-28"
@@ -315,7 +317,7 @@ function ToolbarRightSection({
type="button"
onClick={() => onZoom({ direction: "in" })}
>
- <HugeiconsIcon icon={SearchMinusIcon} />
+ <HugeiconsIcon icon={SearchAddIcon} />
</Button>
</div>
</div>
diff --git a/apps/web/src/constants/timeline-constants.tsx b/apps/web/src/constants/timeline-constants.tsx
index 692ccd65..e467de41 100644
--- a/apps/web/src/constants/timeline-constants.tsx
+++ b/apps/web/src/constants/timeline-constants.tsx
@@ -35,12 +35,10 @@ export const TRACK_GAP = 4;
export const TIMELINE_CONSTANTS = {
PIXELS_PER_SECOND: 50,
DEFAULT_ELEMENT_DURATION: 5,
- PLAYHEAD_LOOKAHEAD_SECONDS: 30, // padding ahead
PADDING_TOP_PX: 0,
- ZOOM_LEVELS: [0.1, 0.25, 0.5, 1, 1.5, 2, 3, 4, 6, 8, 10, 15, 20, 30, 50],
ZOOM_MIN: 0.1,
ZOOM_MAX: 100,
- ZOOM_STEP: 0.1,
+ ZOOM_BUTTON_FACTOR: 1.7,
} as const;
export const DEFAULT_TIMELINE_VIEW_STATE: TTimelineViewState = {
diff --git a/apps/web/src/lib/timeline/zoom-utils.ts b/apps/web/src/lib/timeline/zoom-utils.ts
index c4a64ed1..a299edb3 100644
--- a/apps/web/src/lib/timeline/zoom-utils.ts
+++ b/apps/web/src/lib/timeline/zoom-utils.ts
@@ -53,8 +53,8 @@ export function getZoomPercent({
}
/**
- * Convert linear slider position (0-1) to exponential zoom level.
- * At low slider values, zoom changes are small. At high values, changes are large.
+ * convert linear slider position (0-1) to exponential zoom level.
+ * at low slider values, zoom changes are small. at high values, changes are large.
*/
export function sliderToZoom({
sliderPosition,