{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/banner/src/index.vue"],"sourcesContent":["<template>\n  <teleport :to=\"to\">\n    <transition :name=\"animName\">\n      <hl-alert\n        v-if=\"visible\"\n        :title=\"title\"\n        :description=\"description\"\n        :type=\"type\"\n        :closable=\"closable\"\n        :close-text=\"closeText\"\n        :show-icon=\"showIcon\"\n        :dashed=\"dashed\"\n        :effect=\"effect\"\n        :class=\"[prefix + '-banner', 'at-' + placement]\"\n        :style=\"{\n          height,\n          position: realPosition,\n          zIndex: realZIndex,\n        }\"\n        v-bind=\"$attrs\"\n        @close=\"doClose\"\n      >\n        <template #default>\n          <slot></slot>\n        </template>\n        <template #title>\n          <slot name=\"title\"></slot>\n        </template>\n        <template #icon>\n          <slot name=\"icon\"></slot>\n        </template>\n      </hl-alert>\n    </transition>\n  </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport { HlAlert, useZIndex } from 'hongluan-ui'\nimport { usePrefix } from '@hongluan-business-ui/utils/util'\nimport isServer from '@hongluan-business-ui/utils/isServer'\n\nimport type { PropType } from 'vue'\nimport type { AlertEffect } from 'hongluan-ui'\n\nexport default defineComponent({\n  name: 'Banner',\n  components: {\n    HlAlert,\n  },\n  inheritAttrs: false,\n  props: {\n    modelValue: {\n      type: Boolean,\n      required: true,\n    },\n    title: {\n      type: String,\n      default: '',\n    },\n    description: {\n      type: String,\n      default: '',\n    },\n    type: {\n      type: String,\n      default: 'info',\n    },\n    closable: {\n      type: Boolean,\n      default: true,\n    },\n    closeText: {\n      type: String,\n      default: '',\n    },\n    showIcon: Boolean,\n    dashed: Boolean,\n    effect: {\n      type: String as PropType<AlertEffect>,\n      default: '',\n    },\n    placement: {\n      type: String as PropType<'top' | 'bottom'>,\n      default: 'top',\n    },\n    animationName: {\n      type: String,\n      default: '',\n    },\n    to: {\n      type: String,\n      default: 'body',\n    },\n    zIndex: Number,\n    height: String,\n    position: String as PropType<'fixed' | 'absolute'>,\n    timeout: Number,\n  },\n  emits: ['update:modelValue', 'close'],\n  setup(props, { emit }) {\n    const { prefix } = usePrefix()\n    const { nextZIndex } = useZIndex()\n    const visible = ref(false)\n    const realZIndex = ref(props.zIndex || nextZIndex())\n    let autoCloseTimer: (() => void) | undefined = undefined\n\n    const realPosition = computed(() => {\n      let position = props.position\n      if (!position) {\n        if (props.to === 'body') {\n          position = 'fixed'\n        } else {\n          position = 'absolute'\n        }\n      }\n      return position\n    })\n    const animName = computed(() => {\n      let name = props.animationName\n      if (!name) {\n        switch (props.placement) {\n          case 'bottom':\n            name = 'slideTop'\n            break\n          case 'top':\n            name = 'slideDown'\n            break\n        }\n      }\n      return name\n    })\n\n    const doOpen = () => {\n      if (isServer) {\n        return\n      }\n      visible.value = true\n    }\n    const doClose = () => {\n      autoCloseTimer?.()\n\n      visible.value = false\n      emit('update:modelValue', false)\n      emit('close')\n    }\n\n    watch(() => props.modelValue, val => {\n      if (val) {\n        doOpen()\n        if (props.timeout && !isNaN(+props.timeout)) {\n          ({ stop: autoCloseTimer } = useTimeoutFn(() => doClose(), +props.timeout))\n        }\n        realZIndex.value = props.zIndex ? realZIndex.value++ : nextZIndex()\n      } else {\n        if (visible.value) {\n          doClose()\n        }\n      }\n    }, {\n      immediate: true,\n    })\n\n    return {\n      prefix,\n      visible,\n      animName,\n      realZIndex,\n      realPosition,\n      doClose,\n    }\n  },\n})\n</script>\n"],"names":["_createBlock","_Teleport","_createVNode","_Transition","_mergeProps","_withCtx","_renderSlot"],"mappings":"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"}