{"version":3,"file":"notification.mjs","sources":["../../../components/notification/notification.tsx"],"sourcesContent":["import { defineComponent, h, onBeforeMount, onMounted, ref } from 'vue';\nimport {\n  InfoCircleFilledIcon as TdInfoCircleFilledIcon,\n  CheckCircleFilledIcon as TdCheckCircleFilledIcon,\n  CloseIcon as TdCloseIcon,\n} from 'tdesign-icons-vue-next';\nimport { isFunction } from 'lodash-es';\n\nimport { useConfig, useContent, useTNodeJSX, useGlobalIcon, usePrefixClass } from '@tdesign/shared-hooks';\nimport props from './props';\n\nimport { fadeIn, fadeOut } from './utils';\n\nexport default defineComponent({\n  name: 'TNotification',\n  props: {\n    ...props,\n    placement: String, // just for animation\n    className: String,\n  },\n  setup(props, { slots, expose }) {\n    const COMPONENT_NAME = usePrefixClass('notification');\n    const { classPrefix } = useConfig('classPrefix');\n    const { InfoCircleFilledIcon, CheckCircleFilledIcon, CloseIcon } = useGlobalIcon({\n      InfoCircleFilledIcon: TdInfoCircleFilledIcon,\n      CheckCircleFilledIcon: TdCheckCircleFilledIcon,\n      CloseIcon: TdCloseIcon,\n    });\n    const renderTNode = useTNodeJSX();\n    const renderContent = useContent();\n    const timer = ref(null);\n    const notificationRef = ref(null);\n\n    const handleCloseBtnClick = (e?: MouseEvent) => {\n      const dom = notificationRef.value as HTMLElement;\n      fadeOut(dom, props.placement, () => {\n        props.onCloseBtnClick?.({ e });\n      });\n    };\n\n    const close = () => {\n      const dom = notificationRef.value as HTMLElement;\n      fadeOut(dom, props.placement, () => {\n        props.onClose?.();\n      });\n    };\n\n    const renderIcon = () => {\n      let iconContent;\n      if (props.icon === false) return null;\n      if (isFunction(props.icon)) {\n        iconContent = props.icon(h);\n      } else if (slots.icon) {\n        iconContent = slots.icon(null);\n      } else if (props.theme) {\n        const iconType =\n          props.theme === 'success' ? (\n            <CheckCircleFilledIcon class={`${classPrefix.value}-is-${props.theme}`} />\n          ) : (\n            <InfoCircleFilledIcon class={`${classPrefix.value}-is-${props.theme}`} />\n          );\n        iconContent = <div class={`${classPrefix.value}-notification__icon`}>{iconType}</div>;\n      }\n      return iconContent;\n    };\n\n    const renderClose = () => {\n      const defaultClose = <CloseIcon />;\n      return (\n        <span class={`${classPrefix.value}-message__close`} onClick={handleCloseBtnClick}>\n          {renderTNode('closeBtn', defaultClose)}\n        </span>\n      );\n    };\n\n    const renderMainContent = () => {\n      return <div class={`${COMPONENT_NAME.value}__content`}>{renderContent('default', 'content')}</div>;\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 dom = notificationRef.value as HTMLElement;\n          fadeOut(dom, props.placement, () => {\n            props.onDurationEnd?.();\n          });\n        }, props.duration),\n      );\n    };\n\n    onBeforeMount(() => {\n      props.duration && setTimer();\n    });\n\n    onMounted(() => {\n      const dom = notificationRef.value;\n      fadeIn(dom, props.placement);\n    });\n\n    expose({ close });\n    return () => (\n      <div\n        ref={notificationRef}\n        class={[COMPONENT_NAME.value, props.className]}\n        onMouseenter={clearTimer}\n        onMouseleave={setTimer}\n      >\n        {renderIcon()}\n        <div class={`${COMPONENT_NAME.value}__main`}>\n          <div class={`${COMPONENT_NAME.value}__title__wrap`}>\n            <span class={`${COMPONENT_NAME.value}__title`}>{renderTNode('title')}</span>\n            {renderClose()}\n          </div>\n          {renderMainContent()}\n          {renderTNode('footer')}\n        </div>\n      </div>\n    );\n  },\n});\n"],"names":["defineComponent","name","props","_objectSpread","placement","String","className","setup","slots","_ref","expose","COMPONENT_NAME","usePrefixClass","_useConfig","useConfig","classPrefix","_useGlobalIcon","useGlobalIcon","InfoCircleFilledIcon","TdInfoCircleFilledIcon","CheckCircleFilledIcon","TdCheckCircleFilledIcon","CloseIcon","TdCloseIcon","renderTNode","useTNodeJSX","renderContent","useContent","timer","ref","notificationRef","handleCloseBtnClick","e","dom","value","fadeOut","_props2$onCloseBtnCli","onCloseBtnClick","close","_props2$onClose","onClose","renderIcon","iconContent","icon","isFunction","h","theme","iconType","_createVNode","concat","renderClose","defaultClose","renderMainContent","clearTimer","duration","clearTimeout","setTimer","Number","setTimeout","_props2$onDurationEnd","onDurationEnd","onBeforeMount","onMounted","fadeIn"],"mappings":"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"}