index.mjs 1001 B

12345678910111213141516171819202122232425262728293031
  1. import { onMounted, onBeforeUnmount } from 'vue';
  2. import { isClient } from '@vueuse/core';
  3. import '../../constants/index.mjs';
  4. import { EVENT_CODE } from '../../constants/aria.mjs';
  5. let registeredEscapeHandlers = [];
  6. const cachedHandler = (e) => {
  7. const event = e;
  8. if (event.key === EVENT_CODE.esc) {
  9. registeredEscapeHandlers.forEach((registeredHandler) => registeredHandler(event));
  10. }
  11. };
  12. const useEscapeKeydown = (handler) => {
  13. onMounted(() => {
  14. if (registeredEscapeHandlers.length === 0) {
  15. document.addEventListener("keydown", cachedHandler);
  16. }
  17. if (isClient)
  18. registeredEscapeHandlers.push(handler);
  19. });
  20. onBeforeUnmount(() => {
  21. registeredEscapeHandlers = registeredEscapeHandlers.filter((registeredHandler) => registeredHandler !== handler);
  22. if (registeredEscapeHandlers.length === 0) {
  23. if (isClient)
  24. document.removeEventListener("keydown", cachedHandler);
  25. }
  26. });
  27. };
  28. export { useEscapeKeydown };
  29. //# sourceMappingURL=index.mjs.map