Files
image-studio/input/viewport.ts
2026-07-03 09:37:25 +02:00

20 lines
571 B
TypeScript

import type { Dispatch } from "@commands/dispatcher";
import type { GlobalWheelConsumer, WheelInputEvent } from "./pointer";
export function handleViewportWheel(options: {
event: WheelInputEvent;
globalConsumer: GlobalWheelConsumer;
dispatch: Dispatch;
currentZoom: number;
}): boolean {
if (options.globalConsumer(options.event)) return true;
const zoomFactor = Math.exp(-options.event.delta.y * 0.001);
options.dispatch("viewport.zoomAroundPoint", {
zoom: options.currentZoom * zoomFactor,
point: options.event.position,
});
return true;
}