{"version":3,"file":"alert.mjs","sources":["../../../components/alert/alert.tsx"],"sourcesContent":["import { defineComponent, VNode, ref, onMounted, onBeforeUnmount, getCurrentInstance } 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 { isArray, isString } from 'lodash-es';\n\nimport { on, off, addClass } from '@tdesign/shared-utils';\nimport props from './props';\nimport { SlotReturnValue } from '../common';\nimport {\n  useIcon,\n  useConfig,\n  useTNodeJSX,\n  useGlobalIcon,\n  usePrefixClass,\n  filterCommentNode,\n} from '@tdesign/shared-hooks';\nimport log from '@tdesign/common-js/log/index';\n\nexport default defineComponent({\n  name: 'TAlert',\n  props,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\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>();\n    // description的dom引用\n    const descriptionRef = ref<HTMLElement>();\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      // close属性变更为closeBtn过渡期使用，close废弃后可删除。（需兼容标签上直接写close和closeBtn的场景）\n      const { closeBtn } = props;\n      const isUsingClose = Object.prototype.hasOwnProperty.call(instance.vnode.props || {}, 'close') || slots.close;\n      const close = isUsingClose ? props.close : closeBtn;\n      if (isUsingClose) {\n        log.warnOnce('TAlert', 'prop `close` is going to be deprecated, please use `closeBtn` instead.');\n      }\n      let closeContent = null;\n      if (close === true || close === '') {\n        closeContent = <CloseIcon />;\n      } else if (isString(close)) {\n        closeContent = close;\n      } else {\n        closeContent = renderTNodeJSX(isUsingClose ? 'close' : 'closeBtn');\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 = renderTNodeJSX('default') || renderTNodeJSX('message');\n\n      if (isArray(messageContent)) {\n        messageContent = filterCommentNode(messageContent);\n      }\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","slots","_ref","instance","getCurrentInstance","_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","closeBtn","isUsingClose","Object","prototype","hasOwnProperty","call","vnode","close","log","warnOnce","closeContent","isString","handleClose","renderTitle","titleContent","renderMessage","operationContent","renderDescription","_descriptionRef$value","messageContent","isArray","filterCommentNode","contentLength","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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"}