{"version":3,"file":"message.mjs","sources":["../../../components/message/message.tsx"],"sourcesContent":["import { defineComponent, h, onBeforeMount, onMounted, computed, ref } from 'vue';\nimport {\n  InfoCircleFilledIcon as TdInfoCircleFilledIcon,\n  CheckCircleFilledIcon as TdCheckCircleFilledIcon,\n  ErrorCircleFilledIcon as TdErrorCircleFilledIcon,\n  HelpCircleFilledIcon as TdHelpCircleFilledIcon,\n  CloseIcon as TdCloseIcon,\n} from 'tdesign-icons-vue-next';\n\nimport TLoading from '../loading';\nimport { THEME_LIST } from './consts';\nimport props from './props';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { fadeIn, fadeOut } from './utils';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport { isFunction } from 'lodash-es';\n\nexport default defineComponent({\n  name: 'TMessage',\n  props: {\n    ...props,\n    placement: String, // just for animation\n  },\n  setup(props, { slots, expose }) {\n    const COMPONENT_NAME = usePrefixClass('message');\n    const { InfoCircleFilledIcon, CheckCircleFilledIcon, ErrorCircleFilledIcon, HelpCircleFilledIcon, CloseIcon } =\n      useGlobalIcon({\n        InfoCircleFilledIcon: TdInfoCircleFilledIcon,\n        CheckCircleFilledIcon: TdCheckCircleFilledIcon,\n        ErrorCircleFilledIcon: TdErrorCircleFilledIcon,\n        HelpCircleFilledIcon: TdHelpCircleFilledIcon,\n        CloseIcon: TdCloseIcon,\n      });\n    const classPrefix = usePrefixClass();\n\n    const renderTNode = useTNodeJSX();\n    const renderContent = useContent();\n\n    const msgRef = ref(null);\n    const timer = ref(null);\n\n    const classes = computed(() => {\n      const status: Record<string, boolean> = {};\n      THEME_LIST.forEach((t) => (status[`${classPrefix.value}-is-${t}`] = props.theme === t));\n      return [\n        COMPONENT_NAME.value,\n        status,\n        {\n          [`${classPrefix.value}-is-closable`]: props.closeBtn || slots.closeBtn,\n        },\n      ];\n    });\n\n    const close = (e?: MouseEvent) => {\n      props.onClose?.({ trigger: 'close-click', e });\n      props.onCloseBtnClick?.({ e });\n    };\n\n    const clearTimer = () => {\n      props.duration && clearTimeout(timer.value);\n    };\n\n    const setTimer = () => {\n      if (!props.duration) {\n        return;\n      }\n      timer.value = Number(\n        setTimeout(() => {\n          clearTimer();\n          const msgDom = msgRef.value as HTMLElement;\n          fadeOut(msgDom, props.placement, () => {\n            props.onClose?.({ trigger: 'duration-end' });\n            props.onDurationEnd?.();\n          });\n        }, props.duration),\n      );\n    };\n\n    const renderClose = () => {\n      const defaultClose = <CloseIcon />;\n      return (\n        <span class={`${COMPONENT_NAME.value}__close`} onClick={close}>\n          {renderTNode('closeBtn', defaultClose)}\n        </span>\n      );\n    };\n\n    const renderIcon = () => {\n      if (props.icon === false) return;\n      if (isFunction(props.icon)) return props.icon(h);\n      if (slots.icon) {\n        return slots.icon(null);\n      }\n      const Icon = {\n        info: InfoCircleFilledIcon,\n        success: CheckCircleFilledIcon,\n        warning: ErrorCircleFilledIcon,\n        error: ErrorCircleFilledIcon,\n        question: HelpCircleFilledIcon,\n        loading: TLoading,\n      }[props.theme];\n      return <Icon />;\n    };\n\n    onBeforeMount(() => {\n      props.duration && setTimer();\n    });\n\n    onMounted(() => {\n      const msgDom = msgRef.value;\n      fadeIn(msgDom, props.placement);\n    });\n\n    expose({ close });\n\n    return () => (\n      <div ref={msgRef} class={classes.value} onMouseenter={clearTimer} onMouseleave={setTimer}>\n        {renderIcon()}\n        {renderContent('content', 'default')}\n        {renderClose()}\n      </div>\n    );\n  },\n});\n"],"names":["defineComponent","name","props","_objectSpread","placement","String","setup","slots","_ref","expose","COMPONENT_NAME","usePrefixClass","_useGlobalIcon","useGlobalIcon","InfoCircleFilledIcon","TdInfoCircleFilledIcon","CheckCircleFilledIcon","TdCheckCircleFilledIcon","ErrorCircleFilledIcon","TdErrorCircleFilledIcon","HelpCircleFilledIcon","TdHelpCircleFilledIcon","CloseIcon","TdCloseIcon","classPrefix","renderTNode","useTNodeJSX","renderContent","useContent","msgRef","ref","timer","classes","computed","status","THEME_LIST","forEach","t","concat","value","theme","_defineProperty","closeBtn","close","e","_props2$onClose","_props2$onCloseBtnCli","onClose","trigger","onCloseBtnClick","clearTimer","duration","clearTimeout","setTimer","Number","setTimeout","msgDom","fadeOut","_props2$onClose2","_props2$onDurationEnd","onDurationEnd","renderClose","defaultClose","_createVNode","renderIcon","icon","isFunction","h","Icon","info","success","warning","error","question","loading","TLoading","onBeforeMount","onMounted","fadeIn"],"mappings":"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"}