{"version":3,"file":"Text.mjs","names":[],"sources":["../../src/Text/Text.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useRef } from 'react';\n\nimport { useTextOverflow } from '@/hooks/useTextOverflow';\nimport Tooltip from '@/Tooltip';\n\nimport { variants } from './styles';\nimport { type TextProps } from './type';\n\nconst Text: FC<TextProps> = ({\n  as: Container = 'div',\n  align,\n  className,\n  children,\n  style,\n  type,\n  disabled,\n  strong,\n  italic,\n  underline,\n  delete: deleteStyle,\n  fontSize,\n  lineClamp,\n  lineHeight,\n  mark,\n  code,\n  color,\n  weight,\n  ellipsis,\n  noWrap,\n  textDecoration,\n  textTransform,\n  whiteSpace,\n  wordBreak,\n  ...rest\n}) => {\n  const textRef = useRef<HTMLElement>(null);\n  const isOverflow = useTextOverflow(textRef, ellipsis, children);\n\n  const isMultiEllipsis = typeof ellipsis === 'object' && !!ellipsis.rows && ellipsis.rows > 1;\n  const tooltipWhenOverflow = typeof ellipsis === 'object' && ellipsis.tooltipWhenOverflow;\n\n  const textStyle = {\n    ...(color && { color }),\n    ...(weight && { fontWeight: weight }),\n    ...(lineHeight && { lineHeight }),\n    ...(textTransform && { textTransform }),\n    ...(textDecoration && { textDecoration }),\n    ...(wordBreak && { wordBreak }),\n    ...(typeof ellipsis === 'object' &&\n      ellipsis.rows && {\n        WebkitLineClamp: ellipsis.rows,\n      }),\n    ...(!ellipsis &&\n      !!lineClamp && {\n        WebkitBoxOrient: 'vertical',\n        WebkitLineClamp: lineClamp,\n        display: '-webkit-box',\n        overflow: 'hidden',\n        textOverflow: 'ellipsis',\n      }),\n    ...(fontSize && { fontSize }),\n    ...(align && { textAlign: align }),\n    ...(!isMultiEllipsis && noWrap && { whiteSpace: 'nowrap' as const }),\n    ...(whiteSpace && { whiteSpace }),\n    ...style,\n  };\n\n  const content = (\n    <Container\n      ref={textRef}\n      style={textStyle}\n      className={cx(\n        variants({\n          as: ['h1', 'h2', 'h3', 'h4', 'h5', 'p'].includes(Container as string)\n            ? (Container as any)\n            : undefined,\n          code,\n          delete: deleteStyle,\n          disabled,\n          ellipsis: ellipsis\n            ? typeof ellipsis === 'object' && ellipsis.rows\n              ? 'multi'\n              : true\n            : undefined,\n          italic,\n          mark,\n          strong,\n          type,\n          underline,\n        }),\n        className,\n      )}\n      {...rest}\n    >\n      {children}\n    </Container>\n  );\n\n  // 处理带有 tooltip 的省略\n  if (\n    ellipsis &&\n    typeof ellipsis === 'object' &&\n    (ellipsis.tooltip || ellipsis.tooltipWhenOverflow)\n  ) {\n    // 如果设置了 tooltipWhenOverflow，只在溢出时显示 tooltip\n    if (tooltipWhenOverflow && !isOverflow) {\n      return content;\n    }\n\n    const title = typeof ellipsis.tooltip === 'string' ? ellipsis.tooltip : children;\n    if (ellipsis.tooltip && typeof ellipsis.tooltip === 'object')\n      return (\n        <Tooltip {...ellipsis.tooltip} title={ellipsis.tooltip?.title || title}>\n          {content}\n        </Tooltip>\n      );\n    return <Tooltip title={title}>{content}</Tooltip>;\n  }\n\n  return content;\n};\n\nText.displayName = 'Text';\n\nexport default Text;\n"],"mappings":";;;;;;;;AAWA,MAAM,QAAuB,EAC3B,IAAI,YAAY,OAChB,OACA,WACA,UACA,OACA,MACA,UACA,QACA,QACA,WACA,QAAQ,aACR,UACA,WACA,YACA,MACA,MACA,OACA,QACA,UACA,QACA,gBACA,eACA,YACA,WACA,GAAG,WACC;CACJ,MAAM,UAAU,OAAoB,IAAI;CACxC,MAAM,aAAa,gBAAgB,SAAS,UAAU,QAAQ;CAE9D,MAAM,kBAAkB,OAAO,aAAa,YAAY,CAAC,CAAC,SAAS,QAAQ,SAAS,OAAO;CAC3F,MAAM,sBAAsB,OAAO,aAAa,YAAY,SAAS;CA4BrE,MAAM,UACJ,oBAAC,WAAD;EACE,KAAK;EACL,OAAO;GA5BT,GAAI,SAAS,EAAE,MAAM;GACrB,GAAI,UAAU,EAAE,YAAY,OAAO;GACnC,GAAI,cAAc,EAAE,WAAW;GAC/B,GAAI,iBAAiB,EAAE,cAAc;GACrC,GAAI,kBAAkB,EAAE,eAAe;GACvC,GAAI,aAAa,EAAE,UAAU;GAC7B,GAAI,OAAO,aAAa,YACtB,SAAS,QAAQ,EACf,iBAAiB,SAAS,KAC5B;GACF,GAAI,CAAC,YACH,CAAC,CAAC,aAAa;IACb,iBAAiB;IACjB,iBAAiB;IACjB,SAAS;IACT,UAAU;IACV,cAAc;GAChB;GACF,GAAI,YAAY,EAAE,SAAS;GAC3B,GAAI,SAAS,EAAE,WAAW,MAAM;GAChC,GAAI,CAAC,mBAAmB,UAAU,EAAE,YAAY,SAAkB;GAClE,GAAI,cAAc,EAAE,WAAW;GAC/B,GAAG;EAMc;EACf,WAAW,GACT,SAAS;GACP,IAAI;IAAC;IAAM;IAAM;IAAM;IAAM;IAAM;GAAG,CAAC,CAAC,SAAS,SAAmB,IAC/D,YACD,KAAA;GACJ;GACA,QAAQ;GACR;GACA,UAAU,WACN,OAAO,aAAa,YAAY,SAAS,OACvC,UACA,OACF,KAAA;GACJ;GACA;GACA;GACA;GACA;EACF,CAAC,GACD,SACF;EACA,GAAI;EAEH;CACQ,CAAA;CAIb,IACE,YACA,OAAO,aAAa,aACnB,SAAS,WAAW,SAAS,sBAC9B;EAEA,IAAI,uBAAuB,CAAC,YAC1B,OAAO;EAGT,MAAM,QAAQ,OAAO,SAAS,YAAY,WAAW,SAAS,UAAU;EACxE,IAAI,SAAS,WAAW,OAAO,SAAS,YAAY,UAClD,OACE,oBAAC,SAAD;GAAS,GAAI,SAAS;GAAS,OAAO,SAAS,SAAS,SAAS;aAC9D;EACM,CAAA;EAEb,OAAO,oBAAC,SAAD;GAAgB;aAAQ;EAAiB,CAAA;CAClD;CAEA,OAAO;AACT;AAEA,KAAK,cAAc"}