{"version":3,"file":"message.vue.mjs","sources":["../../../../../packages/components/message/src/message.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=\"[\n        ns.b(),\n        { [ns.m(type)]: type && !icon },\n        ns.is('center', center),\n        ns.is('closable', showClose),\n        customClass,\n      ]\"\n      :style=\"customStyle\"\n      role=\"alert\"\n      @mouseenter=\"clearTimer\"\n      @mouseleave=\"startTimer\"\n    >\n      <el-badge\n        v-if=\"repeatNum > 1\"\n        :value=\"repeatNum\"\n        :type=\"badgeType\"\n        :class=\"ns.e('badge')\"\n      >\n      </el-badge>\n      <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n        <component :is=\"iconComponent\" />\n      </el-icon>\n      <slot>\n        <p v-if=\"!dangerouslyUseHTMLString\" :class=\"ns.e('content')\">\n          {{ message }}\n        </p>\n        <!-- Caution here, message could've been compromised, never use user's input as message -->\n        <p v-else :class=\"ns.e('content')\" v-html=\"message\"></p>\n      </slot>\n      <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n        <close />\n      </el-icon>\n    </div>\n  </transition>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted, watch } from 'vue'\nimport { useEventListener, useTimeoutFn } from '@vueuse/core'\nimport { TypeComponents, TypeComponentsMap } from '@element-ultra/utils'\nimport { EVENT_CODE } from '@element-ultra/shared'\nimport ElBadge from '@element-ultra/components/badge'\nimport { ElIcon } from '@element-ultra/components/icon'\n\nimport { useNamespace } from '@element-ultra/hooks'\nimport { messageEmits, messageProps } from './message'\nimport type { BadgeProps } from '@element-ultra/components/badge'\n\nimport type { CSSProperties } from 'vue'\n\nexport default defineComponent({\n  name: 'ElMessage',\n\n  components: {\n    ElBadge,\n    ElIcon,\n    ...TypeComponents,\n  },\n\n  props: messageProps,\n  emits: messageEmits,\n\n  setup(props) {\n    const ns = useNamespace('message')\n    const visible = ref(false)\n    const badgeType = ref<BadgeProps['type']>(\n      props.type ? (props.type === 'error' ? 'danger' : props.type) : 'info'\n    )\n    let stopTimer: (() => void) | undefined = undefined\n\n    const typeClass = computed(() => {\n      const type = props.type\n      return { [ns.bm('icon', type)]: type && TypeComponentsMap[type] }\n    })\n\n    const iconComponent = computed(() => {\n      return props.icon || TypeComponentsMap[props.type] || ''\n    })\n\n    const customStyle = computed<CSSProperties>(() => ({\n      top: `${props.offset}px`,\n      zIndex: props.zIndex,\n    }))\n\n    function startTimer() {\n      if (props.duration > 0) {\n        ;({ stop: stopTimer } = useTimeoutFn(() => {\n          if (visible.value) close()\n        }, props.duration))\n      }\n    }\n\n    function clearTimer() {\n      stopTimer?.()\n    }\n\n    function close() {\n      visible.value = false\n    }\n\n    function keydown({ code }: KeyboardEvent) {\n      if (code === EVENT_CODE.esc) {\n        // press esc to close the message\n        if (visible.value) {\n          close()\n        }\n      } else {\n        startTimer() // resume timer\n      }\n    }\n\n    onMounted(() => {\n      startTimer()\n      visible.value = true\n    })\n\n    watch(\n      () => props.repeatNum,\n      () => {\n        clearTimer()\n        startTimer()\n      }\n    )\n\n    useEventListener(document, 'keydown', keydown)\n\n    return {\n      ns,\n      typeClass,\n      iconComponent,\n      customStyle,\n      visible,\n      badgeType,\n\n      close,\n      clearTimer,\n      startTimer,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createBlock","_Transition","_withCtx","_withDirectives","_createElementVNode","_normalizeClass","_normalizeStyle","_createCommentVNode","_renderSlot","_createElementBlock","_toDisplayString","_Fragment","_withModifiers"],"mappings":"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"}