UNPKG

@vuesax-alpha/nightly

Version:
37 lines (34 loc) 1.06 kB
import { onMounted, onBeforeUnmount } from 'vue'; import '../../utils/index.mjs'; import '../../constants/index.mjs'; import { EVENT_CODE } from '../../constants/aria.mjs'; import { isClient } from '@vueuse/core'; let registeredEscapeHandlers = []; const cachedHandler = (e) => { const event = e; if (event.key === 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