{"version":3,"file":"notification.vue.mjs","sources":["../../../../../../packages/components/notification/src/notification.vue"],"sourcesContent":["<script lang=\"ts\">\n  import { computed, defineComponent, onMounted, ref, onUnmounted } from 'vue'\n  import type { StyleValue } from 'vue'\n  import { getComponentNamespace, getNamespace } from '../../../utils/global-config'\n\n  import { BnIconPrompt, BnIconWarningFill, BnIconCheckFill, BnIconCloseFill } from '../../icon'\n\n  import usePopupManager from '../../../hooks/use-popup-manager'\n  import { notificationProps } from './props'\n\n  export default defineComponent({\n    name: getComponentNamespace('Notification'),\n    props: notificationProps,\n    emits: ['close', 'destroy'],\n    setup(props) {\n      const ns = getNamespace('notification')\n      const cls = computed(() => [ns, `is-${positionPropMap.value.ver}`])\n\n      const { zIndex } = usePopupManager('message', { runOnMounted: true })\n\n      const positionPropMap = computed(() => {\n        const keys = props.position.split('-')\n        return {\n          hor: keys[1],\n          ver: keys[0]\n        }\n      })\n\n      const animationClsName = computed(() => `bn-notification-slide-${positionPropMap.value.hor}`)\n\n      const positionStyle = computed(() => {\n        const style: StyleValue = {}\n        style.position = props.renderToBody ? 'fixed' : 'absolute'\n        style.zIndex = zIndex.value\n        style[positionPropMap.value.hor as 'left' | 'right'] = '20px'\n        style[positionPropMap.value.ver as 'top' | 'bottom'] = `${props.offset}px`\n        return style\n      })\n\n      const visible = ref(false)\n\n      let timer = 0\n\n      const startTimer = () => {\n        timer = setTimeout(() => {\n          visible.value = false\n        }, props.duration)\n      }\n\n      const currentIcon = computed(() => {\n        if (props.type === 'info') return BnIconPrompt\n        if (props.type === 'warning') return BnIconWarningFill\n        if (props.type === 'strong') return BnIconWarningFill\n        if (props.type === 'success') return BnIconCheckFill\n        if (props.type === 'error') return BnIconCloseFill\n        return ''\n      })\n\n      const handleClose = () => {\n        visible.value = false\n      }\n\n      onMounted(() => {\n        if (props.duration !== 0) {\n          startTimer()\n        }\n        visible.value = true\n      })\n\n      onUnmounted(() => {\n        clearTimeout(timer)\n      })\n\n      return {\n        ns,\n        cls,\n        animationClsName,\n        positionStyle,\n        visible,\n        positionPropMap,\n        currentIcon,\n        handleClose\n      }\n    }\n  })\n</script>\n\n<template>\n  <transition\n    :name=\"animationClsName\"\n    @before-leave=\"$emit('close')\"\n    @after-leave=\"$emit('destroy')\"\n  >\n    <div v-show=\"visible\" :class=\"cls\" :style=\"positionStyle\">\n      <div :class=\"[`${ns}__header`]\">\n        <component :is=\"currentIcon\" :class=\"[`${ns}__icon`, `is-${type}`]\" :size=\"18\"></component>\n        <div>\n          <div :class=\"[`${ns}__title`]\">\n            {{ title }}\n          </div>\n          <div :class=\"[`${ns}__message`]\">\n            <slot>{{ message }}</slot>\n          </div>\n        </div>\n      </div>\n\n      <span v-if=\"showClose\" :class=\"[`${ns}__close-icon`]\" @click.self=\"handleClose\"></span>\n    </div>\n  </transition>\n</template>\n"],"names":["animationClsName","_openBlock","_createBlock","_Transition","_withCtx","_withDirectives","_createElementVNode","positionStyle","_normalizeClass","_normalizeStyle","_resolveDynamicComponent","ns","title","_toDisplayString","showClose","_createElementBlock","_createCommentVNode"],"mappings":";;;;AAyFS,SAAA,YAAEA,IAAgB,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,QAAA,EAAA;EACtB,OAAAC,SAAA,EAAY,EAAAC,WAAA,CAAAC,UAAA,EAAA;AAAA,IACZ,MAAA,IAAA,CAAA,gBAAA;AAAA,IAHH,aAAA,EAoBa,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,KAAA,CAAA,OAAA,CAAA,CAAA;AAAA,IAAA,YAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA;AAAA;;IAfiB,OAAA,EAAAC,QAAA,MAAA;AAAA,MAAaC,cAAA,CAAAC,kBAAA;AAAA,QAAEC,KAAAA;AAAAA,QAAa;AAAA,UAAA,KAAA,EAAAC,cAAA,CAAA,IAAA,CAAA,GAAA,CAAA;AAAA,UACtD,KAAA,EAUMC,cAAA,CAAA,IAAA,CAAA,aAAA,CAAA;AAAA,SAAA;AAAA;;;;mCATJ,CAAA,CAA2F,CAAA,EAAA,IAAA,CAAA,YAAA,CAAA,CAAA;AAAA,aAAA;AAAA;eAAdR,WAAA,EAAAC,WAAA,CAAAQ,uBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,EAAA;AAAA,gBAAA,KAAA,EAAAF,eAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,GAAA,EAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA,gBAC7E,IAAA,EAAA,EAAA;AAAA,eACE,EAAA,IAAA,EAEM,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA,cAAAF,kBAAA,CAFK,OAAMK,IAAAA,EAAAA;AAAAA,gBAAAA,kBAAAA;AAAAA,kBACZC,KAAAA;AAAAA,kBAAAA;AAAAA,oBAEL,OAEMJ,cAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAAA,mBAAA;AAAA,kBAFAK,eAAA,CAAK,KAAMF,KAAAA,CAAAA;AAAAA,kBAAAA,CAAAA;AAAAA;AAAAA,iBAAE;AAAA,gBAAAL,kBAAA;AAAA;;oBACjB,OAA0BE,cAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,aAAA,CAAA,CAAA;AAAA,mBAAA;AAAA;;;;;;;;;;;;eAKpBM,CAAAA;AAAAA,aAAAA;AAAAA;;;UAAiB,IAAA,CAAA,SAAA,IAAAb,SAAA,EAAA,EAAAc,kBAAA;AAAA,YAAMJ,MAAAA;AAAAA,YAAE;AAAA,cAAkB,GAAA,EAAA,CAAA;AAAA,cAAA,OAAAH,cAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAAA;;;;;WAbrC,IAAAQ,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,SAAA;AAAA;;;;;;;;;;;;;;"}