{"version":3,"file":"notification.mjs","sources":["../../../../../../../packages/components/notification/src/notification.vue"],"sourcesContent":["<template>\n  <transition\n    :name=\"ns.b('fade')\"\n    @before-leave=\"onClose\"\n    @after-leave=\"$emit('destroy')\"\n  >\n    <div\n      v-show=\"visible\"\n      :id=\"id\"\n      :class=\"[ns.b(), customClass, horizontalClass]\"\n      :style=\"positionStyle\"\n      role=\"alert\"\n      @mouseenter=\"clearTimer\"\n      @mouseleave=\"startTimer\"\n      @click=\"onClick\"\n    >\n      <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n        <component :is=\"iconComponent\" />\n      </el-icon>\n      <div :class=\"ns.e('group')\">\n        <h2 :class=\"ns.e('title')\" v-text=\"title\" />\n        <div\n          v-show=\"message\"\n          :class=\"ns.e('content')\"\n          :style=\"!!title ? undefined : { margin: 0 }\"\n        >\n          <slot>\n            <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n            <!-- Caution here, message could've been compromised, never use user's input as message -->\n            <p v-else v-html=\"message\" />\n          </slot>\n        </div>\n        <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n          <component :is=\"closeIcon\" />\n        </el-icon>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, ref } from 'vue'\nimport { useEventListener, useTimeoutFn } from '@vueuse/core'\nimport { TypeComponentsMap, getEventCode } from '@hd-front-end/utils'\nimport { EVENT_CODE } from '@hd-front-end/constants'\nimport { ElIcon } from '@hd-front-end/components/icon'\nimport { useGlobalComponentSettings } from '@hd-front-end/components/config-provider'\nimport { notificationEmits, notificationProps } from './notification'\n\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElNotification',\n})\n\nconst props = defineProps(notificationProps)\ndefineEmits(notificationEmits)\n\nconst { ns, zIndex } = useGlobalComponentSettings('notification')\nconst { nextZIndex, currentZIndex } = zIndex\n\nconst visible = ref(false)\nlet timer: (() => void) | undefined = undefined\n\nconst typeClass = computed(() => {\n  const type = props.type\n  return type && TypeComponentsMap[props.type] ? ns.m(type) : ''\n})\n\nconst iconComponent = computed(() => {\n  if (!props.type) return props.icon\n  return TypeComponentsMap[props.type] || props.icon\n})\n\nconst horizontalClass = computed(() =>\n  props.position.endsWith('right') ? 'right' : 'left'\n)\n\nconst verticalProperty = computed(() =>\n  props.position.startsWith('top') ? 'top' : 'bottom'\n)\n\nconst positionStyle = computed<CSSProperties>(() => {\n  return {\n    [verticalProperty.value]: `${props.offset}px`,\n    zIndex: props.zIndex ?? currentZIndex.value,\n  }\n})\n\nfunction startTimer() {\n  if (props.duration > 0) {\n    ;({ stop: timer } = useTimeoutFn(() => {\n      if (visible.value) close()\n    }, props.duration))\n  }\n}\n\nfunction clearTimer() {\n  timer?.()\n}\n\nfunction close() {\n  visible.value = false\n}\n\nfunction onKeydown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n\n  switch (code) {\n    case EVENT_CODE.delete:\n    case EVENT_CODE.backspace:\n      clearTimer() // press delete/backspace clear timer\n      break\n    case EVENT_CODE.esc:\n      // press esc to close the notification\n      if (visible.value) {\n        close()\n      }\n      break\n    default: // resume timer\n      startTimer()\n      break\n  }\n}\n\n// lifecycle\nonMounted(() => {\n  startTimer()\n  nextZIndex()\n  visible.value = true\n})\n\nuseEventListener(document, 'keydown', onKeydown)\n\ndefineExpose({\n  visible,\n  /** @description close notification */\n  close,\n})\n</script>\n"],"names":["_createBlock","_Transition","_unref","onClose","$emit","_withDirectives","_createElementVNode","id","_normalizeClass","customClass","_normalizeStyle","onClick","_openBlock","_resolveDynamicComponent","_toDisplayString","title","_renderSlot","dangerouslyUseHTMLString","_createElementBlock","message","_Fragment","_createCommentVNode","showClose","_withModifiers","closeIcon"],"mappings":"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"}