{"version":3,"file":"text.mjs","sources":["../../../components/typography/text.tsx"],"sourcesContent":["import { computed, defineComponent, ref, h } from 'vue';\nimport { useContent, usePrefixClass } from '@tdesign/shared-hooks';\nimport props from './text-props';\nimport { copy } from '@tdesign/shared-utils';\nimport { CopyIcon, CheckIcon } from 'tdesign-icons-vue-next';\nimport Ellipsis from './components/ellipsis';\nimport TTooltip from '../tooltip';\nimport TButton from '../button';\nimport { useConfig } from '../config-provider/hooks/useConfig';\n\nimport type { TdTextProps } from './type';\nimport type { TdTooltipProps } from '../tooltip/type';\n\nexport default defineComponent({\n  name: 'TTypographyText',\n  props,\n  setup(props, { slots }) {\n    const COMPONENT_NAME = usePrefixClass('typography');\n    const { globalConfig } = useConfig('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 tooltipText = computed(() => {\n      const { copyable } = props;\n      if (isCopied.value) return globalConfig.value.copiedText;\n      else if (typeof copyable === 'object') return copyable.tooltipProps?.content;\n      return null;\n    });\n\n    const content = computed(() => {\n      return props.content || slots?.default();\n    });\n\n    const renderCopy = () => {\n      const { copyable } = props;\n\n      let icon: any = isCopied.value ? () => <CheckIcon /> : () => <CopyIcon />;\n      let tooltipConf: TdTooltipProps = {\n        theme: 'default',\n      };\n\n      let onCopy = () => {};\n      if (typeof copyable === 'object') {\n        if (copyable.suffix && !isCopied.value) {\n          icon = copyable.suffix;\n        }\n        if (copyable.tooltipProps) {\n          tooltipConf = copyable.tooltipProps;\n        }\n        if (typeof copyable.onCopy === 'function') {\n          onCopy = copyable.onCopy;\n        }\n      }\n      return (\n        <TTooltip {...tooltipConf} content={tooltipText.value}>\n          <TButton icon={icon} shape=\"square\" theme=\"primary\" variant=\"text\" onClick={(e) => onCopyClick(e, onCopy)} />\n        </TTooltip>\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      } else if (Array.isArray(content.value)) {\n        return content.value.map((v) => v.children).join('');\n      }\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}>\n          {wrapperDecorations(props, content)}\n          {props.copyable ? renderCopy() : null}\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":["defineComponent","name","props","setup","slots","_ref","COMPONENT_NAME","usePrefixClass","_useConfig","useConfig","globalConfig","isCopied","ref","renderContent","useContent","wrapperDecorations","_ref2","content","code","underline","del","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","tooltipText","_copyable$tooltipProp","copyable","copiedText","_typeof","tooltipProps","renderCopy","icon","_createVNode","CheckIcon","CopyIcon","tooltipConf","onCopy","suffix","TTooltip","_mergeProps","onClick","e","onCopyClick","getChildrenText","text","Array","isArray","map","v","children","join","cb","preventDefault","stopPropagation","setTimeout","copy","ellipsis","Ellipsis","_default"],"mappings":"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"}