{"version":3,"file":"notification.vue2.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":[],"mappings":"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"}