diff --git a/src/components/Asset.tsx b/src/components/Asset.tsx index 060d464..6e39818 100644 --- a/src/components/Asset.tsx +++ b/src/components/Asset.tsx @@ -13,6 +13,7 @@ import { Switch, createEffect, createSignal, + onCleanup, } from "solid-js"; import { FontAwesomeIcon } from "./FontAwesomeIcon"; @@ -71,9 +72,33 @@ function AssetHandler() { setControlls(false); }); + const handleKeyDown = (event: KeyboardEvent) => { + if (!active() || "Escape" != event.key) return; + event.preventDefault(); + setActive(""); + }; + + const handleWheel = (event: WheelEvent) => { + if (!active()) return; + event.preventDefault(); + if (event.deltaY > 0 && !(zoomLevel() <= 0)) setZoomLevel((e) => e - 1); + else if (event.deltaY < 0 && !(zoomLevel() >= 4)) + setZoomLevel((e) => e + 1); + }; + + createEffect(() => { + window.addEventListener("keydown", handleKeyDown); + window.addEventListener("wheel", handleWheel, { passive: false }); + onCleanup(() => { + window.removeEventListener("keydown", handleKeyDown); + window.removeEventListener("wheel", handleWheel); + }); + }); + return (
e.target === wrapperRef && setActive("")} onMouseMove={handleMouseMove} classList={{ "fullscreen-asset": true, active: !!active() }} > @@ -105,14 +130,14 @@ function AssetHandler() {