You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import { onMounted, onBeforeUnmount } from 'vue'; import { isClient } from '@vueuse/core'; import { EVENT_CODE } from '../../constants/aria.mjs';
let registeredEscapeHandlers = []; const cachedHandler = (event) => { if (event.code === EVENT_CODE.esc) { registeredEscapeHandlers.forEach((registeredHandler) => registeredHandler(event)); } }; const useEscapeKeydown = (handler) => { onMounted(() => { if (registeredEscapeHandlers.length === 0) { document.addEventListener("keydown", cachedHandler); } if (isClient) registeredEscapeHandlers.push(handler); }); onBeforeUnmount(() => { registeredEscapeHandlers = registeredEscapeHandlers.filter((registeredHandler) => registeredHandler !== handler); if (registeredEscapeHandlers.length === 0) { if (isClient) document.removeEventListener("keydown", cachedHandler); } }); };
export { useEscapeKeydown }; //# sourceMappingURL=index.mjs.map
|