From b266678fe4bb8c4053688fd037693fa2f930ac14 Mon Sep 17 00:00:00 2001 From: gantiro Date: Tue, 15 Jul 2025 22:51:38 +0700 Subject: Optimize timeline performance --- apps/web/src/hooks/use-disable-browser-zoom.ts | 45 ++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 apps/web/src/hooks/use-disable-browser-zoom.ts (limited to 'apps/web/src/hooks/use-disable-browser-zoom.ts') diff --git a/apps/web/src/hooks/use-disable-browser-zoom.ts b/apps/web/src/hooks/use-disable-browser-zoom.ts new file mode 100644 index 00000000..215268ac --- /dev/null +++ b/apps/web/src/hooks/use-disable-browser-zoom.ts @@ -0,0 +1,45 @@ +import { useEffect } from "react"; + +export const useDisableBrowserZoom = () => { + useEffect(() => { + const handleWheel = (e: WheelEvent) => { + if (e.ctrlKey) { + e.preventDefault(); + } + }; + + const handleKeyDown = (e: KeyboardEvent) => { + if (e.ctrlKey) { + const key = e.key; + if (key === "+" || key === "-" || key === "0" || key === "=") { + e.preventDefault(); + } + } + }; + + const handleGesture = (e: Event) => { + e.preventDefault(); + }; + + window.addEventListener("wheel", handleWheel, { passive: false }); + window.addEventListener("keydown", handleKeyDown, { passive: false }); + + window.addEventListener("gesturestart", handleGesture, { + passive: false, + }); + window.addEventListener("gesturechange", handleGesture, { + passive: false, + }); + window.addEventListener("gestureend", handleGesture, { + passive: false, + }); + + return () => { + window.removeEventListener("wheel", handleWheel); + window.removeEventListener("keydown", handleKeyDown); + window.removeEventListener("gesturestart", handleGesture); + window.removeEventListener("gesturechange", handleGesture); + window.removeEventListener("gestureend", handleGesture); + }; + }, []); +}; -- cgit v1.3.1