27 lines
652 B
TypeScript
27 lines
652 B
TypeScript
import type { ReactNode } from "react";
|
|
import { keysStore } from "./store";
|
|
import type { KeyName } from "./types";
|
|
|
|
const KEY_MAP: { [k: string]: KeyName } = {
|
|
Escape: "escape",
|
|
ArrowUp: "up",
|
|
ArrowDown: "down",
|
|
ArrowLeft: "left",
|
|
ArrowRight: "right",
|
|
};
|
|
|
|
if (typeof window !== "undefined") {
|
|
window.addEventListener("keydown", (e) => {
|
|
const key = Object.hasOwn(KEY_MAP, e.key) ? KEY_MAP[e.key]! : e.key;
|
|
const fn = keysStore.getHandler(key);
|
|
// console.log(e.key);
|
|
if (!fn) return;
|
|
e.preventDefault();
|
|
fn();
|
|
});
|
|
}
|
|
|
|
export function ShortcutProvider({ children }: { children: ReactNode }) {
|
|
return children;
|
|
}
|