summaryrefslogtreecommitdiff
path: root/apps/web/src/hooks/use-disable-browser-zoom.ts
diff options
context:
space:
mode:
authorgantiro <gantiro396@gmail.com>2025-07-15 22:51:38 +0700
committergantiro <gantiro396@gmail.com>2025-07-15 22:51:38 +0700
commitb266678fe4bb8c4053688fd037693fa2f930ac14 (patch)
tree89a8c3b7a151a42fecfc480b440c55fce79252da /apps/web/src/hooks/use-disable-browser-zoom.ts
parent1f95bb98d6108a5fa059e0f9a08c98e5bdb72c08 (diff)
downloadopencut-b266678fe4bb8c4053688fd037693fa2f930ac14.tar.gz
Optimize timeline performance
Diffstat (limited to 'apps/web/src/hooks/use-disable-browser-zoom.ts')
-rw-r--r--apps/web/src/hooks/use-disable-browser-zoom.ts45
1 files changed, 45 insertions, 0 deletions
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);
+ };
+ }, []);
+};