{"version":3,"file":"message2.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-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport ElBadge from '@element-plus/components/badge'\nimport { ElIcon } from '@element-plus/components/icon'\n\nimport { useNamespace } from '@element-plus/hooks'\nimport { messageEmits, messageProps } from './message'\nimport type { BadgeProps } from '@element-plus/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":["_openBlock","_createBlock","_createElementVNode","_normalizeClass","_normalizeStyle","_createCommentVNode","_createElementBlock","_withCtx"],"mappings":";;;;;;;;;;;;;AA0DA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,OACG;AAAA;AAAA,EAGL,OAAO;AAAA,EACP,OAAO;AAAA,EAEP,MAAM,OAAO;AACX,UAAM,KAAK,aAAa;AACxB,UAAM,UAAU,IAAI;AACpB,UAAM,YAAY,IAChB,MAAM,OAAQ,MAAM,SAAS,UAAU,WAAW,MAAM,OAAQ;AAElE,QAAI,YAAsC;AAE1C,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,OAAO,MAAM;AACnB,aAAO,GAAG,GAAG,GAAG,QAAQ,QAAQ,QAAQ,kBAAkB;AAAA;AAG5D,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,QAAQ,kBAAkB,MAAM,SAAS;AAAA;AAGxD,UAAM,cAAc,SAAwB;AAAO,MACjD,KAAK,GAAG,MAAM;AAAA,MACd,QAAQ,MAAM;AAAA;AAGhB,0BAAsB;AACpB,UAAI,MAAM,WAAW,GAAG;AACtB;AAAC,QAAC,GAAE,MAAM,cAAc,aAAa,MAAM;AACzC,cAAI,QAAQ;AAAO;AAAA,WAClB,MAAM;AAAA;AAAA;AAIb,0BAAsB;AACpB;AAAA;AAGF,qBAAiB;AACf,cAAQ,QAAQ;AAAA;AAGlB,qBAAiB,EAAE,QAAuB;AACxC,UAAI,SAAS,WAAW,KAAK;AAE3B,YAAI,QAAQ,OAAO;AACjB;AAAA;AAAA,aAEG;AACL;AAAA;AAAA;AAIJ,cAAU,MAAM;AACd;AACA,cAAQ,QAAQ;AAAA;AAGlB,UACE,MAAM,MAAM,WACZ,MAAM;AACJ;AACA;AAAA;AAIJ,qBAAiB,UAAU,WAAW;AAEtC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;;SA9IKA,aAAIC;AAAA,IACV,cAAY,EAAE;AAAA,IACd,eAAW;AAAA;;qBAEZ;AAAA,qBAESC;AAAA,QACN,SAAK;AAAA,QAAY,OAAEC,eAAE;AAAA,eAAe;AAAA,UAAsC,QAAG,GAAE,eAAW,aAAM;AAAA,UAAW,QAAG,GAAE,eAAa;AAAA,UAAoB,uBAAW;AAAA;;QAQ7J,OAAKC,eAAO;AAAA,QACX;AAAA,QACA,cAAU,uCAAE;AAAA;SAGL;AAAA;UACL,KAAK;AAAA,UACL,OAAM;AAAA,UACN,MAAK;AAAA;mDAGOC,mBAAa;AAAA;UAAG,KAAK;AAAA;;2BAClC;AAAA;;;4BAEFA,mBAMO;AAAA,mBALK,wBAAwB;AAAA;YAAG,KAAK;AAAA,kCACrC,QAAO;AAAA,6BAGZ,eAAwD,oBADxDC;AAAA,YACAD,mBAAwD;AAAA,+BAAxC,KAAE;AAAA,cAAiB,sBAAe;AAAA;;;;;UAEzB,KAAK;AAAA,UAAqB,OAAKF,oBAAO;AAAA;;mBAC/DI,QAAS;AAAA;;;;aAhCI;AAAA;;;;;;;;;;"}