{"version":3,"file":"alert.mjs","sources":["../../../components/alert/alert.tsx"],"sourcesContent":["import { defineComponent, VNode, ref, onMounted, onBeforeUnmount } from 'vue';\nimport {\n  CheckCircleFilledIcon as TdCheckCircleFilledIcon,\n  CloseIcon as TdCloseIcon,\n  ErrorCircleFilledIcon as TdErrorCircleFilledIcon,\n  HelpCircleFilledIcon as TdHelpCircleFilledIcon,\n  InfoCircleFilledIcon as TdInfoCircleFilledIcon,\n} from 'tdesign-icons-vue-next';\nimport { isString } from 'lodash-es';\nimport { isArray } from 'lodash-es';\n\nimport { on, off, addClass } from '../utils/dom';\nimport props from './props';\nimport { SlotReturnValue } from '../common';\nimport { useIcon } from '../hooks/icon';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { useConfig, usePrefixClass } from '../hooks/useConfig';\n\nimport { useTNodeJSX } from '../hooks/tnode';\n\nexport default defineComponent({\n  name: 'TAlert',\n  props,\n  setup(props) {\n    const { globalConfig, classPrefix } = useConfig('alert');\n    const { CheckCircleFilledIcon, CloseIcon, ErrorCircleFilledIcon, HelpCircleFilledIcon, InfoCircleFilledIcon } =\n      useGlobalIcon({\n        CheckCircleFilledIcon: TdCheckCircleFilledIcon,\n        CloseIcon: TdCloseIcon,\n        ErrorCircleFilledIcon: TdErrorCircleFilledIcon,\n        HelpCircleFilledIcon: TdHelpCircleFilledIcon,\n        InfoCircleFilledIcon: TdInfoCircleFilledIcon,\n      });\n    const COMPONENT_NAME = usePrefixClass('alert');\n    const renderTNodeJSX = useTNodeJSX();\n\n    const renderIconTNode = useIcon();\n    // alert的dom引用\n    const alertRef = ref<HTMLElement | null>(null);\n    // description的dom引用\n    const descriptionRef = ref<HTMLElement | null>(null);\n    // desc高度\n    const descHeight = ref(0);\n    // 是否可见，关闭后置为false\n    const visible = ref(true);\n    // 是否已收起，使用折叠功能时有效，用于表示是否已折叠；默认折叠\n    const collapsed = ref(true);\n\n    const renderIcon = () => {\n      const Component = {\n        info: InfoCircleFilledIcon,\n        success: CheckCircleFilledIcon,\n        warning: ErrorCircleFilledIcon,\n        error: ErrorCircleFilledIcon,\n        question: HelpCircleFilledIcon,\n      };\n      const iconContent = renderIconTNode('icon', Component);\n      return iconContent ? <div class={`${COMPONENT_NAME.value}__icon`}>{iconContent}</div> : null;\n    };\n\n    const renderClose = () => {\n      const { close } = props;\n      let closeContent = null;\n      if (close === true || close === '') {\n        closeContent = <CloseIcon />;\n      } else if (isString(close)) {\n        closeContent = close;\n      } else {\n        closeContent = renderIconTNode('close');\n      }\n      return closeContent ? (\n        <div class={`${COMPONENT_NAME.value}__close`} onClick={handleClose}>\n          {closeContent}\n        </div>\n      ) : null;\n    };\n\n    const renderTitle = () => {\n      const titleContent = renderTNodeJSX('title');\n      return titleContent ? <div class={`${COMPONENT_NAME.value}__title`}> {titleContent}</div> : null;\n    };\n\n    const renderMessage = () => {\n      const operationContent = renderTNodeJSX('operation');\n      return (\n        <div class={`${COMPONENT_NAME.value}__message`}>\n          {renderDescription()}\n          {operationContent ? <div class={`${COMPONENT_NAME.value}__operation`}>{operationContent}</div> : null}\n        </div>\n      );\n    };\n\n    const renderDescription = () => {\n      let messageContent;\n\n      messageContent = renderTNodeJSX('default');\n      if (!messageContent) {\n        messageContent = renderTNodeJSX('message');\n      }\n      const contentLength = isArray(messageContent) ? (messageContent as Array<SlotReturnValue>).length : 1;\n      const hasCollapse = props.maxLine > 0 && props.maxLine < contentLength;\n      const height = (descriptionRef.value?.children[0] as HTMLElement)?.offsetHeight;\n      if (hasCollapse && collapsed.value) {\n        // 折叠\n        messageContent = (messageContent as Array<SlotReturnValue>).slice(0, props.maxLine as number);\n        height && (descriptionRef.value.style.height = `${descHeight.value}px`);\n      } else if (hasCollapse) {\n        // 展开\n        height &&\n          (descriptionRef.value.style.height = `${height * (contentLength - props.maxLine) + descHeight.value}px`);\n      }\n\n      // 如果需要折叠，则元素之间补<br/>；否则不补\n      return (\n        <div class={`${COMPONENT_NAME.value}__description`} ref={descriptionRef}>\n          {hasCollapse\n            ? (messageContent as Array<string | VNode>).map((content) => <div>{content}</div>)\n            : messageContent}\n          {hasCollapse ? (\n            <div\n              class={`${COMPONENT_NAME.value}__collapse`}\n              onClick={() => {\n                collapsed.value = !collapsed.value;\n              }}\n            >\n              {collapsed.value ? globalConfig.value.expandText : globalConfig.value.collapseText}\n            </div>\n          ) : null}\n        </div>\n      );\n    };\n    const renderContent = () => {\n      return (\n        <div class={`${COMPONENT_NAME.value}__content`}>\n          {renderTitle()}\n          {renderMessage()}\n        </div>\n      );\n    };\n    const handleClose = (e: MouseEvent) => {\n      props.onClose?.({ e });\n      addClass(alertRef.value, `${COMPONENT_NAME.value}--closing`);\n    };\n\n    const handleCloseEnd = (e: TransitionEvent) => {\n      const isTransitionTarget = e.target === alertRef.value;\n      // 防止子元素冒泡触发\n      if (e.propertyName === 'opacity' && isTransitionTarget) {\n        visible.value = false;\n        props.onClosed?.({ e });\n      }\n    };\n\n    onMounted(() => {\n      on(alertRef.value, 'transitionend', handleCloseEnd);\n      descHeight.value = descriptionRef.value.offsetHeight;\n    });\n    onBeforeUnmount(() => {\n      off(alertRef.value, 'transitionend', handleCloseEnd);\n    });\n\n    return () => (\n      <div\n        ref={alertRef}\n        class={[\n          `${COMPONENT_NAME.value}`,\n          `${COMPONENT_NAME.value}--${props.theme}`,\n          {\n            [`${classPrefix.value}-is-hidden`]: !visible.value,\n          },\n        ]}\n      >\n        {renderIcon()}\n        {renderContent()}\n        {renderClose()}\n      </div>\n    );\n  },\n});\n"],"names":["defineComponent","name","props","setup","_useConfig","useConfig","globalConfig","classPrefix","_useGlobalIcon","useGlobalIcon","CheckCircleFilledIcon","TdCheckCircleFilledIcon","CloseIcon","TdCloseIcon","ErrorCircleFilledIcon","TdErrorCircleFilledIcon","HelpCircleFilledIcon","TdHelpCircleFilledIcon","InfoCircleFilledIcon","TdInfoCircleFilledIcon","COMPONENT_NAME","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderIconTNode","useIcon","alertRef","ref","descriptionRef","descHeight","visible","collapsed","renderIcon","Component","info","success","warning","error","question","iconContent","_createVNode","concat","value","renderClose","close","closeContent","isString","handleClose","renderTitle","titleContent","renderMessage","operationContent","renderDescription","_descriptionRef$value","messageContent","contentLength","isArray","length","hasCollapse","maxLine","height","children","offsetHeight","slice","style","map","content","onClick","expandText","collapseText","renderContent","e","_props2$onClose","onClose","addClass","handleCloseEnd","isTransitionTarget","target","propertyName","_props2$onClosed","onClosed","onMounted","on","onBeforeUnmount","off","theme","_defineProperty"],"mappings":"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"}