{"version":3,"file":"text.mjs","sources":["../../src/typography/text.tsx"],"sourcesContent":["import { computed, defineComponent, ref, h, isVNode } from 'vue';\nimport { CopyIcon, CheckIcon } from 'tdesign-icons-vue-next';\nimport { useContent } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\nimport props from './text-props';\nimport Ellipsis from './ellipsis';\nimport { copy } from '../_util/copy-to-clipboard';\n\nimport type { TdTextProps } from './type';\n\nexport default defineComponent({\n  name: 'TTypographyText',\n  props,\n  setup(props, { slots }) {\n    const COMPONENT_NAME = usePrefixClass('typography');\n    const isCopied = ref(false);\n    const renderContent = useContent();\n\n    const wrapperDecorations = (\n      { code, underline, delete: del, strong, keyboard, mark, italic }: TdTextProps,\n      content: any,\n    ) => {\n      let currentContent = content;\n\n      function wrap(needed: boolean, Tag: string, styles: object = {}) {\n        if (!needed) return;\n        currentContent = h(Tag, { style: styles }, [currentContent]);\n      }\n\n      wrap(strong, 'strong');\n      wrap(underline, 'u');\n      wrap(del, 'del');\n      wrap(code, 'code');\n      wrap(mark !== false, 'mark', mark ? { backgroundColor: mark } : {});\n      wrap(keyboard, 'kbd');\n      wrap(italic, 'i');\n      return currentContent;\n    };\n\n    const classList = computed(() => {\n      const { theme, disabled } = props;\n      const prefix = COMPONENT_NAME.value;\n      const list: string[] = [prefix];\n      if (disabled) {\n        list.push(`${prefix}--disabled`);\n      } else if (theme && ['primary', 'secondary', 'success', 'warning', 'error'].includes(theme)) {\n        list.push(`${prefix}--${theme}`);\n      }\n      return list;\n    });\n\n    const content = computed(() => {\n      return props.content || slots?.default();\n    });\n\n    const renderSuffix = (suffix: any, copied: boolean) => {\n      if (typeof suffix === 'function') {\n        return suffix(h, { copied });\n      }\n      if (isVNode(suffix)) {\n        return suffix;\n      }\n      return suffix;\n    };\n\n    const renderCopy = (afterEllipsis?: boolean) => {\n      const { copyable } = props;\n\n      let icon: any = null;\n      let onCopy = () => {};\n\n      if (typeof copyable === 'object') {\n        if (copyable.suffix && !isCopied.value) {\n          icon = renderSuffix(copyable.suffix, isCopied.value);\n        }\n        if (typeof copyable.onCopy === 'function') {\n          onCopy = copyable.onCopy;\n        }\n      }\n\n      // 如果没有自定义 suffix，使用默认图标\n      if (!icon) {\n        icon = isCopied.value ? <CheckIcon /> : <CopyIcon />;\n      }\n\n      return (\n        <span class={`${COMPONENT_NAME.value}__copy`} onClick={(e: MouseEvent) => onCopyClick(e, onCopy)}>\n          {icon}\n        </span>\n      );\n    };\n\n    const getChildrenText = () => {\n      const { copyable } = props;\n      if (typeof copyable === 'object' && copyable?.text) {\n        return copyable.text;\n      }\n      if (typeof content.value === 'string') {\n        return content.value;\n      }\n      if (Array.isArray(content.value)) {\n        return content.value.map((v: any) => v.children).join('');\n      }\n      return '';\n    };\n\n    const onCopyClick = (e: MouseEvent, cb: Function) => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      isCopied.value = true;\n      setTimeout(() => {\n        isCopied.value = false;\n      }, 1500);\n\n      copy(getChildrenText());\n      cb?.();\n    };\n\n    return () => {\n      const content = renderContent('default', 'content');\n      return props.ellipsis ? (\n        <Ellipsis {...props} class={classList.value} renderCopy={props.copyable ? () => renderCopy(true) : null}>\n          {wrapperDecorations(props, content)}\n        </Ellipsis>\n      ) : (\n        <span class={classList.value}>\n          {wrapperDecorations(props, content)}\n          {props.copyable ? renderCopy() : null}\n        </span>\n      );\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","setup","slots","_ref","COMPONENT_NAME","usePrefixClass","isCopied","ref","renderContent","useContent","wrapperDecorations","_ref2","content","code","underline","del","delete","strong","keyboard","mark","italic","currentContent","wrap","needed","Tag","styles","arguments","length","undefined","h","style","backgroundColor","classList","computed","theme","disabled","prefix","value","list","push","concat","includes","default","renderSuffix","suffix","copied","isVNode","renderCopy","afterEllipsis","copyable","icon","onCopy","_typeof","_createVNode","CheckIcon","CopyIcon","onClick","e","onCopyClick","getChildrenText","text","Array","isArray","map","v","children","join","cb","preventDefault","stopPropagation","setTimeout","copy","_slot","ellipsis","Ellipsis","_mergeProps","_default"],"mappings":"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"}