index.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var core = require('@vueuse/core');
  5. var event = require('../../utils/dom/event.js');
  6. var aria = require('../../constants/aria.js');
  7. let registeredEscapeHandlers = [];
  8. const cachedHandler = (event$1) => {
  9. const code = event.getEventCode(event$1);
  10. if (code === aria.EVENT_CODE.esc) {
  11. registeredEscapeHandlers.forEach(
  12. (registeredHandler) => registeredHandler(event$1)
  13. );
  14. }
  15. };
  16. const useEscapeKeydown = (handler) => {
  17. vue.onMounted(() => {
  18. if (registeredEscapeHandlers.length === 0) {
  19. document.addEventListener("keydown", cachedHandler);
  20. }
  21. if (core.isClient)
  22. registeredEscapeHandlers.push(handler);
  23. });
  24. vue.onBeforeUnmount(() => {
  25. registeredEscapeHandlers = registeredEscapeHandlers.filter(
  26. (registeredHandler) => registeredHandler !== handler
  27. );
  28. if (registeredEscapeHandlers.length === 0) {
  29. if (core.isClient)
  30. document.removeEventListener("keydown", cachedHandler);
  31. }
  32. });
  33. };
  34. exports.useEscapeKeydown = useEscapeKeydown;
  35. //# sourceMappingURL=index.js.map