/**
 * 计算字符串“字数”
 * 中文 / 全角字符：1
 * 英文 / 数字 / 半角符号：0.5
 */
export function calcTextLength(text: string): number {
  let length = 0;

  for (const char of text) {
    // charCode > 255 基本可以认为是中文或全角字符
    if (char.charCodeAt(0) > 255) {
      length += 1;
    } else {
      length += 0.5;
    }
  }

  return length;
}

/**
 * 根据文本计算列宽
 */
export function calcColumnWidth(
  text: string,
  unitWidth = 24,
  minWidth = 50,
  maxWidth = 150
) {
  const width = calcTextLength(text) * unitWidth;
  return Math.min(Math.max(width, minWidth), maxWidth);
}
