"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatDisplayValue = void 0;
// 格式化显示值，根据 config 的 enum 配置将 value 转换为 label
const formatDisplayValue = (val, config) => {
    if (val === null || val === undefined || val === '') {
        return '';
    }
    // 获取 enum 配置，创建 value -> label 的映射
    const enumOptions = config.enum || [];
    const enumMap = new Map();
    enumOptions.forEach((option) => {
        if (option.value !== undefined) {
            enumMap.set(option.value, option.label || option.value);
        }
    });
    // 根据值类型和 enum 配置格式化显示
    const formatSingleValue = (v) => {
        // 如果值本身是对象且已有 label，直接使用
        if (typeof v === 'object' && v !== null) {
            if (v.label)
                return v.label;
            if (v.value !== undefined && enumMap.has(v.value)) {
                return enumMap.get(v.value);
            }
            if (v.value !== undefined)
                return String(v.value);
            return JSON.stringify(v);
        }
        // 如果是原始值，尝试从 enum 中查找 label
        if (enumMap.has(v)) {
            return enumMap.get(v);
        }
        // 如果没有找到对应的 label，返回原始值
        return String(v);
    };
    // 处理数组值
    if (Array.isArray(val)) {
        return val.map(formatSingleValue).join(', ');
    }
    // 处理单个值
    return formatSingleValue(val);
};
exports.formatDisplayValue = formatDisplayValue;
