{"version":3,"file":"TokenTag.mjs","names":["chatMessages"],"sources":["../../../src/chat/TokenTag/TokenTag.tsx"],"sourcesContent":["'use client';\n\nimport { Progress } from 'antd';\nimport { cssVar } from 'antd-style';\nimport numeral from 'numeral';\nimport { type FC, useMemo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport chatMessages from '@/i18n/resources/en/chat';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport type { TokenTagProps } from './type';\n\nconst format = (number: number) => numeral(number).format('0,0');\n\nconst TokenTag: FC<TokenTagProps> = ({\n  mode = 'remained',\n  maxValue,\n  value,\n  text,\n  showInfo,\n  size = 20,\n  ...rest\n}) => {\n  const { t } = useTranslation(chatMessages);\n  const valueLeft = maxValue - value;\n  const percent = value / maxValue;\n  const remainedText = text?.remained ?? t('tokenTag.remained');\n  const usedText = text?.used ?? t('tokenTag.used');\n  const overloadText = text?.overload ?? t('tokenTag.overload');\n\n  const data = useMemo(() => {\n    let type: 'normal' | 'low' | 'overload';\n    let color;\n\n    if (percent < 0.7) {\n      type = 'normal';\n      color = cssVar.colorText;\n    } else if (percent < 0.9) {\n      type = 'low';\n      color = cssVar.colorWarning;\n    } else {\n      type = 'overload';\n      color = cssVar.colorError;\n    }\n    return {\n      color,\n      type,\n    };\n  }, [percent]);\n\n  const title =\n    valueLeft > 0\n      ? [\n          mode === 'remained' ? remainedText : usedText,\n          mode === 'remained' ? format(valueLeft) : format(value),\n        ].join(' ')\n      : overloadText;\n\n  return (\n    <ActionIcon\n      size={size}\n      title={showInfo ? title : undefined}\n      icon={\n        <Progress\n          percent={percent * 100}\n          showInfo={false}\n          size={Number(typeof size === 'object' ? size?.size || 20 : size) || 20}\n          strokeColor={data.color}\n          type=\"circle\"\n        />\n      }\n      {...rest}\n    />\n  );\n};\n\nTokenTag.displayName = 'TokenTag';\n\nexport default TokenTag;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,UAAU,WAAmB,QAAQ,OAAO,CAAC,OAAO,MAAM;AAEhE,MAAM,YAA+B,EACnC,OAAO,YACP,UACA,OACA,MACA,UACA,OAAO,IACP,GAAG,WACC;CACJ,MAAM,EAAE,MAAM,eAAeA,aAAa;CAC1C,MAAM,YAAY,WAAW;CAC7B,MAAM,UAAU,QAAQ;CACxB,MAAM,eAAe,MAAM,YAAY,EAAE,oBAAoB;CAC7D,MAAM,WAAW,MAAM,QAAQ,EAAE,gBAAgB;CACjD,MAAM,eAAe,MAAM,YAAY,EAAE,oBAAoB;CAE7D,MAAM,OAAO,cAAc;EACzB,IAAI;EACJ,IAAI;AAEJ,MAAI,UAAU,IAAK;AACjB,UAAO;AACP,WAAQ,OAAO;aACN,UAAU,IAAK;AACxB,UAAO;AACP,WAAQ,OAAO;SACV;AACL,UAAO;AACP,WAAQ,OAAO;;AAEjB,SAAO;GACL;GACA;GACD;IACA,CAAC,QAAQ,CAAC;CAEb,MAAM,QACJ,YAAY,IACR,CACE,SAAS,aAAa,eAAe,UACrC,SAAS,aAAa,OAAO,UAAU,GAAG,OAAO,MAAM,CACxD,CAAC,KAAK,IAAI,GACX;AAEN,QACE,oBAAC,YAAD;EACQ;EACN,OAAO,WAAW,QAAQ,KAAA;EAC1B,MACE,oBAAC,UAAD;GACE,SAAS,UAAU;GACnB,UAAU;GACV,MAAM,OAAO,OAAO,SAAS,WAAW,MAAM,QAAQ,KAAK,KAAK,IAAI;GACpE,aAAa,KAAK;GAClB,MAAK;GACL,CAAA;EAEJ,GAAI;EACJ,CAAA;;AAIN,SAAS,cAAc"}