fix(studio): capture timeline pinch zoom

This commit is contained in:
Miguel Ángel
2026-04-28 17:31:49 -04:00
parent 820b07ddaa
commit 7ff1734db7
@@ -1042,8 +1042,8 @@ export const Timeline = memo(function Timeline({
[onAssetDrop, onFileDrop],
);
const handleWheel = useCallback(
(e: React.WheelEvent<HTMLDivElement>) => {
const handlePinchWheel = useCallback(
(e: WheelEvent) => {
if (!e.ctrlKey) return;
const scroll = scrollRef.current;
if (!scroll || durationRef.current <= 0 || fitPpsRef.current <= 0 || ppsRef.current <= 0) {
@@ -1084,6 +1084,15 @@ export const Timeline = memo(function Timeline({
[setManualZoomPercent, setZoomMode],
);
useEffect(() => {
const scroll = scrollRef.current;
if (!scroll) return;
scroll.addEventListener("wheel", handlePinchWheel, { passive: false, capture: true });
return () => {
scroll.removeEventListener("wheel", handlePinchWheel, { capture: true });
};
}, [handlePinchWheel, timelineReady, elements.length]);
if (!timelineReady || elements.length === 0) {
return (
<div
@@ -1259,7 +1268,6 @@ export const Timeline = memo(function Timeline({
onDragOver={handleAssetDragOver}
onDragLeave={() => setIsDragOver(false)}
onDrop={handleAssetDrop}
onWheel={handleWheel}
onPointerDown={handlePointerDown}
onPointerMove={handlePointerMove}
onPointerUp={handlePointerUp}