You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
12 KiB
1 lines
12 KiB
{"ast":null,"code":"import { defineComponent, ref, computed, onMounted, watch, openBlock, createBlock, Transition, unref, withCtx, withDirectives, createElementVNode, normalizeClass, normalizeStyle, createCommentVNode, resolveDynamicComponent, renderSlot, createElementBlock, toDisplayString, Fragment, withModifiers, createVNode, vShow } from 'vue';\nimport { useEventListener, useResizeObserver, useTimeoutFn } from '@vueuse/core';\nimport { ElBadge } from '../../badge/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { messageProps, messageEmits } from './message.mjs';\nimport { getLastOffset, getOffsetOrSpace } from './instance.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useGlobalComponentSettings } from '../../config-provider/src/hooks/use-global-config.mjs';\nimport { TypeComponentsMap, TypeComponents } from '../../../utils/vue/icon.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nconst __default__ = defineComponent({\n name: \"ElMessage\"\n});\nconst _sfc_main = /* @__PURE__ */defineComponent({\n ...__default__,\n props: messageProps,\n emits: messageEmits,\n setup(__props, {\n expose\n }) {\n const props = __props;\n const {\n Close\n } = TypeComponents;\n const {\n ns,\n zIndex\n } = useGlobalComponentSettings(\"message\");\n const {\n currentZIndex,\n nextZIndex\n } = zIndex;\n const messageRef = ref();\n const visible = ref(false);\n const height = ref(0);\n let stopTimer = void 0;\n const badgeType = computed(() => props.type ? props.type === \"error\" ? \"danger\" : props.type : \"info\");\n const typeClass = computed(() => {\n const type = props.type;\n return {\n [ns.bm(\"icon\", type)]: type && TypeComponentsMap[type]\n };\n });\n const iconComponent = computed(() => props.icon || TypeComponentsMap[props.type] || \"\");\n const lastOffset = computed(() => getLastOffset(props.id));\n const offset = computed(() => getOffsetOrSpace(props.id, props.offset) + lastOffset.value);\n const bottom = computed(() => height.value + offset.value);\n const customStyle = computed(() => ({\n top: `${offset.value}px`,\n zIndex: currentZIndex.value\n }));\n function startTimer() {\n if (props.duration === 0) return;\n ({\n stop: stopTimer\n } = useTimeoutFn(() => {\n close();\n }, props.duration));\n }\n function clearTimer() {\n stopTimer == null ? void 0 : stopTimer();\n }\n function close() {\n visible.value = false;\n }\n function keydown({\n code\n }) {\n if (code === EVENT_CODE.esc) {\n close();\n }\n }\n onMounted(() => {\n startTimer();\n nextZIndex();\n visible.value = true;\n });\n watch(() => props.repeatNum, () => {\n clearTimer();\n startTimer();\n });\n useEventListener(document, \"keydown\", keydown);\n useResizeObserver(messageRef, () => {\n height.value = messageRef.value.getBoundingClientRect().height;\n });\n expose({\n visible,\n bottom,\n close\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Transition, {\n name: unref(ns).b(\"fade\"),\n onBeforeLeave: _ctx.onClose,\n onAfterLeave: $event => _ctx.$emit(\"destroy\"),\n persisted: \"\"\n }, {\n default: withCtx(() => [withDirectives(createElementVNode(\"div\", {\n id: _ctx.id,\n ref_key: \"messageRef\",\n ref: messageRef,\n class: normalizeClass([unref(ns).b(), {\n [unref(ns).m(_ctx.type)]: _ctx.type\n }, unref(ns).is(\"center\", _ctx.center), unref(ns).is(\"closable\", _ctx.showClose), unref(ns).is(\"plain\", _ctx.plain), _ctx.customClass]),\n style: normalizeStyle(unref(customStyle)),\n role: \"alert\",\n onMouseenter: clearTimer,\n onMouseleave: startTimer\n }, [_ctx.repeatNum > 1 ? (openBlock(), createBlock(unref(ElBadge), {\n key: 0,\n value: _ctx.repeatNum,\n type: unref(badgeType),\n class: normalizeClass(unref(ns).e(\"badge\"))\n }, null, 8, [\"value\", \"type\", \"class\"])) : createCommentVNode(\"v-if\", true), unref(iconComponent) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 1,\n class: normalizeClass([unref(ns).e(\"icon\"), unref(typeClass)])\n }, {\n default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(unref(iconComponent))))]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true), renderSlot(_ctx.$slots, \"default\", {}, () => [!_ctx.dangerouslyUseHTMLString ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"content\"))\n }, toDisplayString(_ctx.message), 3)) : (openBlock(), createElementBlock(Fragment, {\n key: 1\n }, [createCommentVNode(\" Caution here, message could've been compromised, never use user's input as message \"), createElementVNode(\"p\", {\n class: normalizeClass(unref(ns).e(\"content\")),\n innerHTML: _ctx.message\n }, null, 10, [\"innerHTML\"])], 2112))]), _ctx.showClose ? (openBlock(), createBlock(unref(ElIcon), {\n key: 2,\n class: normalizeClass(unref(ns).e(\"closeBtn\")),\n onClick: withModifiers(close, [\"stop\"])\n }, {\n default: withCtx(() => [createVNode(unref(Close))]),\n _: 1\n }, 8, [\"class\", \"onClick\"])) : createCommentVNode(\"v-if\", true)], 46, [\"id\"]), [[vShow, visible.value]])]),\n _: 3\n }, 8, [\"name\", \"onBeforeLeave\", \"onAfterLeave\"]);\n };\n }\n});\nvar MessageConstructor = /* @__PURE__ */_export_sfc(_sfc_main, [[\"__file\", \"message.vue\"]]);\nexport { MessageConstructor as default };","map":{"version":3,"names":["name","Close","TypeComponents","ns","zIndex","useGlobalComponentSettings","currentZIndex","nextZIndex","messageRef","ref","visible","height","stopTimer","badgeType","computed","props","type","typeClass","bm","TypeComponentsMap","iconComponent","icon","lastOffset","getLastOffset","id","offset","getOffsetOrSpace","value","bottom","customStyle","top","startTimer","duration","stop","useTimeoutFn","close","clearTimer","keydown","code","EVENT_CODE","esc","onMounted","watch","repeatNum","useEventListener","document","useResizeObserver","getBoundingClientRect","expose","_ctx","_cache","openBlock","createBlock","Transition","unref","b","onBeforeLeave","onClose","onAfterLeave","$event","$emit","persisted","default","withCtx"],"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 ref=\"messageRef\"\n :class=\"[\n ns.b(),\n { [ns.m(type)]: type },\n ns.is('center', center),\n ns.is('closable', showClose),\n ns.is('plain', plain),\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-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\" />\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\n<script lang=\"ts\" setup>\nimport { computed, onMounted, ref, watch } from 'vue'\nimport { useEventListener, useResizeObserver, 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 { useGlobalComponentSettings } from '@element-plus/components/config-provider'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { messageEmits, messageProps } from './message'\nimport { getLastOffset, getOffsetOrSpace } from './instance'\nimport type { BadgeProps } from '@element-plus/components/badge'\nimport type { CSSProperties } from 'vue'\n\nconst { Close } = TypeComponents\n\ndefineOptions({\n name: 'ElMessage',\n})\n\nconst props = defineProps(messageProps)\ndefineEmits(messageEmits)\n\nconst { ns, zIndex } = useGlobalComponentSettings('message')\nconst { currentZIndex, nextZIndex } = zIndex\n\nconst messageRef = ref<HTMLDivElement>()\nconst visible = ref(false)\nconst height = ref(0)\n\nlet stopTimer: (() => void) | undefined = undefined\n\nconst badgeType = computed<BadgeProps['type']>(() =>\n props.type ? (props.type === 'error' ? 'danger' : props.type) : 'info'\n)\nconst typeClass = computed(() => {\n const type = props.type\n return { [ns.bm('icon', type)]: type && TypeComponentsMap[type] }\n})\nconst iconComponent = computed(\n () => props.icon || TypeComponentsMap[props.type] || ''\n)\n\nconst lastOffset = computed(() => getLastOffset(props.id))\nconst offset = computed(\n () => getOffsetOrSpace(props.id, props.offset) + lastOffset.value\n)\nconst bottom = computed((): number => height.value + offset.value)\nconst customStyle = computed<CSSProperties>(() => ({\n top: `${offset.value}px`,\n zIndex: currentZIndex.value,\n}))\n\nfunction startTimer() {\n if (props.duration === 0) return\n ;({ stop: stopTimer } = useTimeoutFn(() => {\n close()\n }, props.duration))\n}\n\nfunction clearTimer() {\n stopTimer?.()\n}\n\nfunction close() {\n visible.value = false\n}\n\nfunction keydown({ code }: KeyboardEvent) {\n if (code === EVENT_CODE.esc) {\n // press esc to close the message\n close()\n }\n}\n\nonMounted(() => {\n startTimer()\n nextZIndex()\n visible.value = true\n})\n\nwatch(\n () => props.repeatNum,\n () => {\n clearTimer()\n startTimer()\n }\n)\n\nuseEventListener(document, 'keydown', keydown)\n\nuseResizeObserver(messageRef, () => {\n height.value = messageRef.value!.getBoundingClientRect().height\n})\n\ndefineExpose({\n visible,\n bottom,\n close,\n})\n</script>\n"],"mappings":";;;;;;;;;;mCA6Dc;EACZA,IAAM;AACR;;;;;;;;;IAJM;MAAEC;IAAA,CAAU,GAAAC,cAAA;IASlB,MAAM;MAAEC,EAAA;MAAIC;IAAO,IAAIC,0BAAA,CAA2B,SAAS;IACrD;MAAEC,aAAe;MAAAC;IAAA,CAAe,GAAAH,MAAA;IAEtC,MAAMI,UAAA,GAAaC,GAAoB;IACjC,MAAAC,OAAA,GAAUD,GAAA,CAAI,KAAK;IACnB,MAAAE,MAAA,GAASF,GAAA,CAAI,CAAC;IAEpB,IAAIG,SAAsC;IAE1C,MAAMC,SAAY,GAAAC,QAAA,OAAAC,KAAA,CAAAC,IAAA,GAAAD,KAAA,CAAAC,IAAA,0BAAAD,KAAA,CAAAC,IAAA;IAA6B,MAAAC,SAC/B,GAAAH,QAAA,CAAM;MACtB,MAAAE,IAAA,GAAAD,KAAA,CAAAC,IAAA;MACM;QAAA,CAAAb,EAAA,CAAAe,EAAA,CAAY,QAAAF,IAAe,IAAAA,IAAA,IAAAG,iBAAA,CAAAH,IAAA;MAAA;IAC/B;IACO,MAAAI,aAAS,GAAAN,QAAY,CAAC,MAAGC,KAAQ,CAAkBM,IAAA,IAAAF,iBAAM,CAAAJ,KAAA,CAAAC,IAAA;IAClE,MAACM,UAAA,GAAAR,QAAA,OAAAS,aAAA,CAAAR,KAAA,CAAAS,EAAA;IACD,MAAMC,MAAgB,GAAAX,QAAA,OAAAY,gBAAA,CAAAX,KAAA,CAAAS,EAAA,EAAAT,KAAA,CAAAU,MAAA,IAAAH,UAAA,CAAAK,KAAA;IAAA,MAAAC,MACR,GAAAd,QAA0B,OAAAH,MAAA,CAAAgB,KAAA,GAAAF,MAAe,CAAAE,KAAA;IACvD,MAAAE,WAAA,GAAAf,QAAA;MAEAgB,GAAA,KAAAL,MAAA,CAAAE,KAA4B;MAC5BvB,MAAe,EAAAE,aAAA,CAAAqB;IAAA,EACb;IACF,SAAAI,WAAA;MACA,IAAMhB,KAAA,CAAAiB,QAAkB,QAClB;MACJ;QAAAC,IAAQ,EAAArB;MAAY,IAAAsB,YAAA;QAAAC,KAAA,EACE;MAAA,CACtB,EAAApB,KAAA,CAAAiB,QAAA;IAEF;IACM,SAAAI,WAAA;MACHxB,SAAS,IAAU,gBAAAA,SAAuB;IACzC;IACF,SAAAuB,KAAiBA,CAAA;MACnBzB,OAAA,CAAAiB,KAAA;IAEA;IACc,SAAAU,QAAA;MAAAC;IAAA;MACd,IAAAA,IAAA,KAAAC,UAAA,CAAAC,GAAA;QAEAL,KAAS,EAAQ;MACf;IAAgB;IAGTM,SAAA;MACHV,UAAA;MAEIxB,UAAA;MACRG,OAAA,CAAAiB,KAAA;IAAA,CACF;IAEAe,KAAA,OAAgB3B,KAAA,CAAA4B,SAAA;MACHP,UAAA;MACAL,UAAA;IACX;IACFa,gBAAC,CAAAC,QAAA,aAAAR,OAAA;IAEDS,iBAAA,CAAAtC,UAAA;MACEG,MAAM,CAAMgB,KAAA,GAAAnB,UAAA,CAAAmB,KAAA,CAAAoB,qBAAA,GAAApC,MAAA;IAAA,EACZ;IACaqC,MAAA;MACAtC,OAAA;MACbkB,MAAA;MACFO;IAEA,CAAiB;IAEjB,QAAAc,IAAA,EAAAC,MAAA;MACE,OAAOC,SAAQ,IAAAC,WAAkB,CAAAC,UAAA;QAClCrD,IAAA,EAAAsD,KAAA,CAAAnD,EAAA,EAAAoD,CAAA;QAEYC,aAAA,EAAAP,IAAA,CAAAQ,OAAA;QACXC,YAAA,EAAAC,MAAA,IAAAV,IAAA,CAAAW,KAAA;QACAC,SAAA;MAAA,CACA;QACDC,OAAA,EAAAC,OAAA,Q","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|