@storm-stack/hooks
Version:
A collection of React hooks used by Storm Software in various client libraries and applications.
17 lines (16 loc) • 586 B
JavaScript
import React from "react";
import { useCallbackRef } from "./use-callback-ref.mjs";
export function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);
React.useEffect(() => {
const handleKeyDown = (event) => {
if (event.key === "Escape") {
onEscapeKeyDown(event);
}
};
ownerDocument.addEventListener("keydown", handleKeyDown);
return () => {
ownerDocument.removeEventListener("keydown", handleKeyDown);
};
}, [onEscapeKeyDown, ownerDocument]);
}