pixi-fusion
Version:
This module offers a set of common components needed for playing games.
28 lines (23 loc) • 650 B
text/typescript
import { useEffect } from "react";
export const useGlobalEventHandler = <K extends keyof DocumentEventMap>({
isEnabled = true,
event,
callback
}: {
isEnabled?: boolean;
event: K;
callback: (e: DocumentEventMap[K]) => unknown;
}) => {
useEffect(() => {
if (!isEnabled) {
return () => {};
}
const internalCallback = (e: DocumentEventMap[K]) => {
callback(e);
};
document.addEventListener(event, internalCallback);
return () => {
document.removeEventListener(event, internalCallback);
};
}, [isEnabled, event, callback]);
};