{"version":3,"file":"notification.vue.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\"></h2>\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 compromized, nerver use user's input as message -->\n            <!-- eslint-disable-next-line -->\n            <p v-else v-html=\"message\"></p>\n          </slot>\n        </div>\n        <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n          <close />\n        </el-icon>\n      </div>\n    </div>\n  </transition>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted } from 'vue'\nimport { useEventListener, useTimeoutFn } from '@vueuse/core'\nimport { TypeComponents, TypeComponentsMap } from '@element-ultra/utils'\nimport { EVENT_CODE } from '@element-ultra/shared'\nimport { ElIcon } from '@element-ultra/components/icon'\nimport { useNamespace } from '@element-ultra/hooks'\nimport { notificationProps, notificationEmits } from './notification'\n\nimport type { CSSProperties } from 'vue'\n\nexport default defineComponent({\n  name: 'ElNotification',\n\n  components: {\n    ElIcon,\n    ...TypeComponents,\n  },\n\n  props: notificationProps,\n  emits: notificationEmits,\n\n  setup(props) {\n    const ns = useNamespace('notification')\n    const visible = ref(false)\n    let timer: (() => void) | undefined = undefined\n\n    const typeClass = computed(() => {\n      const type = props.type\n      return type && TypeComponentsMap[props.type] ? ns.m(type) : ''\n    })\n\n    const iconComponent = computed(() => {\n      return TypeComponentsMap[props.type] || props.icon || ''\n    })\n\n    const horizontalClass = computed(() =>\n      props.position.endsWith('right') ? 'right' : 'left'\n    )\n\n    const verticalProperty = computed(() =>\n      props.position.startsWith('top') ? 'top' : 'bottom'\n    )\n\n    const positionStyle = computed<CSSProperties>(() => {\n      return {\n        [verticalProperty.value]: `${props.offset}px`,\n        zIndex: props.zIndex,\n      }\n    })\n\n    function startTimer() {\n      if (props.duration > 0) {\n        ;({ stop: timer } = useTimeoutFn(() => {\n          if (visible.value) close()\n        }, props.duration))\n      }\n    }\n\n    function clearTimer() {\n      timer?.()\n    }\n\n    function close() {\n      visible.value = false\n    }\n\n    function onKeydown({ code }: KeyboardEvent) {\n      if (code === EVENT_CODE.delete || code === EVENT_CODE.backspace) {\n        clearTimer() // press delete/backspace clear timer\n      } else if (code === EVENT_CODE.esc) {\n        // press esc to close the notification\n        if (visible.value) {\n          close()\n        }\n      } else {\n        startTimer() // resume timer\n      }\n    }\n\n    // lifecycle\n    onMounted(() => {\n      startTimer()\n      visible.value = true\n    })\n\n    useEventListener(document, 'keydown', onKeydown)\n\n    return {\n      ns,\n      horizontalClass,\n      typeClass,\n      iconComponent,\n      positionStyle,\n      visible,\n\n      close,\n      clearTimer,\n      startTimer,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createBlock","_Transition","_withCtx","_withDirectives","_createElementVNode","_normalizeClass","_normalizeStyle","_createCommentVNode","_createElementBlock","_toDisplayString","_Fragment","_vShow","_withModifiers"],"mappings":"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"}