/**
 * 电话号码校验
 * @param phone 电话号码（纯数字）
 * @param countryCode 国家码
 * @param countryConfig 国家码配置
 * @param props 组件 Props
 * @returns 校验结果
 */
export function validatePhone(phone, countryCode, countryConfig, props) {
  var errors = [];
  var cleaned = phone.replace(/\D/g, '');

  // 1. 必填校验
  if (props.required && !cleaned) {
    errors.push(props.errorMessage || '请输入电话号码');
    return {
      isValid: false,
      errors: errors
    };
  }

  // 如果为空且非必填，直接返回有效
  if (!cleaned) {
    return {
      isValid: true,
      errors: errors
    };
  }

  // 2. 格式校验（如果启用）
  if (props.validateFormat !== false && countryConfig) {
    // 长度校验
    if (cleaned.length !== countryConfig.maxLength) {
      // 如果 pattern 支持范围（如 /^\d{10,11}$/），则判断是否在范围内
      var patternStr = countryConfig.pattern.toString();
      var isRangePattern = patternStr.includes(',');
      if (!isRangePattern || !countryConfig.pattern.test(cleaned)) {
        errors.push("\u7535\u8BDD\u53F7\u7801\u5E94\u4E3A ".concat(countryConfig.maxLength, " \u4F4D"));
      }
    }

    // 正则校验
    if (!countryConfig.pattern.test(cleaned)) {
      errors.push(props.errorMessage || '电话号码格式不正确');
    }
  }

  // 3. 自定义校验
  if (props.customValidator) {
    var result = props.customValidator(cleaned, countryCode);
    if (result !== true) {
      errors.push(typeof result === 'string' ? result : '校验失败');
    }
  }
  return {
    isValid: errors.length === 0,
    errors: errors
  };
}