{"version":3,"file":"masker.mjs","sources":["../../../../../../packages/components/masker/src/masker.vue"],"sourcesContent":["<template>\n  <div :class=\"ns.b()\">\n    <teleport v-if=\"active && transfer\" to=\"body\">\n      <div\n        ref=\"maskContainer\"\n        :style=\"{\n          zIndex: zIndex,\n          backgroundColor:\n            permeable == true ? 'transparent' : 'rgba(0, 0, 0, 0.4)',\n        }\"\n        :class=\"[ns.e('mask-inner')]\"\n        @click=\"handleMaskClick\"\n      >\n        <div v-if=\"$slots.mask\" :class=\"ns.e('mask')\">\n          <slot name=\"mask\" />\n        </div>\n        <div\n          ref=\"maskContent\"\n          :style=\"{\n            backgroundColor: permeable ? 'rgba(0, 0, 0, 0.4)' : 'transparent',\n          }\"\n          :class=\"[ns.e('custom-mask')]\"\n          @click.stop\n        >\n          <slot />\n        </div>\n      </div>\n    </teleport>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { useNamespace } from '@lit-element/hooks'\nimport { useZIndex } from './useZindex'\nimport { maskerProps } from './masker'\n\ndefineOptions({\n  name: 'LtMasker',\n})\nconst props = defineProps(maskerProps)\nconst ns = useNamespace('masker')\nconst emit = defineEmits<{\n  (e: 'update:active', value: boolean): void\n}>()\n\nconst maskContainer = ref<HTMLElement | null>(null)\nconst maskContent = ref<HTMLElement | null>(null)\nconst zIndex = ref<number>(0)\n\nconst { nextZIndex } = useZIndex()\n\nconst handleMaskClick = async () => {\n  if (!props.closable) return\n  if (props.onBeforeClose) {\n    const shouldClose = await props.onBeforeClose()\n    if (!shouldClose) return\n  }\n  emit('update:active', false)\n}\n\nconst handleKeyDown = (event: KeyboardEvent) => {\n  if (event.key === 'Escape' && !props.disableEsc) {\n    handleMaskClick()\n  }\n}\n\nconst trapFocus = () => {\n  if (!maskContent.value) return\n  const focusableElements = maskContent.value.querySelectorAll(\n    'a[href], button, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n  ) as NodeListOf<HTMLElement>\n  if (focusableElements.length > 0) {\n    focusableElements[0].focus()\n  }\n}\n\nconst preventScroll = (event: WheelEvent) => {\n  if (!props.permeable) {\n    event.preventDefault()\n  }\n}\n\nwatch(\n  () => props.active,\n  (newValue) => {\n    if (newValue) {\n      zIndex.value = nextZIndex()\n      document.body.style.overflow = 'hidden'\n      window.addEventListener('resize', handleResize)\n      window.addEventListener('keydown', handleKeyDown)\n      window.addEventListener('wheel', preventScroll, { passive: false })\n      nextTick(() => {\n        trapFocus()\n      })\n    } else {\n      document.body.style.overflow = ''\n      window.removeEventListener('resize', handleResize)\n      window.removeEventListener('keydown', handleKeyDown)\n      window.removeEventListener('wheel', preventScroll)\n    }\n  }\n)\n\nconst handleResize = () => {\n  if (props.onResize) {\n    props.onResize()\n  }\n}\n\nonMounted(() => {\n  if (props.active) {\n    zIndex.value = nextZIndex()\n    document.body.style.overflow = 'hidden'\n    window.addEventListener('resize', handleResize)\n    window.addEventListener('keydown', handleKeyDown)\n    window.addEventListener('wheel', preventScroll, { passive: false })\n    nextTick(() => {\n      trapFocus()\n    })\n  }\n})\n\nonUnmounted(() => {\n  document.body.style.overflow = ''\n  window.removeEventListener('resize', handleResize)\n  window.removeEventListener('keydown', handleKeyDown)\n  window.removeEventListener('wheel', preventScroll)\n})\n\ndefineExpose({\n  handleMaskClick,\n})\n</script>\n"],"names":["_openBlock","_createElementBlock"],"mappings":"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"}