"use strict";
/**
 * 员工选择器字段处理辅助函数（Display 层）
 * 职责：从员工对象中提取显示文本和 ID
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.isEmployeeSelectorType = isEmployeeSelectorType;
exports.extractEmployeeLabel = extractEmployeeLabel;
exports.extractEmployeeId = extractEmployeeId;
exports.findEmployeeLabel = findEmployeeLabel;
/**
 * 判断是否为员工选择器类组件
 */
function isEmployeeSelectorType(columnType) {
    return columnType === 'EmployeeSelect' || columnType === 'CnEmployeeSelect';
}
/**
 * 从员工选择器的 value 对象中提取显示文本
 * 优先级：nickName > name > workNo
 */
function extractEmployeeLabel(value) {
    if (typeof value === 'object' && value !== null) {
        // 优先使用 nickName
        if (value.nickName)
            return value.nickName;
        // 其次使用 name
        if (value.name)
            return value.name;
        // 如果没有这些字段，使用 value 或 workNo
        if (value.value !== undefined && value.value !== null) {
            return String(value.value);
        }
        if (value.workNo !== undefined && value.workNo !== null) {
            return String(value.workNo);
        }
        // 如果都没有，避免显示 [object Object]
        return '';
    }
    return String(value !== null && value !== void 0 ? value : '');
}
/**
 * 从员工选择器的 value 对象中提取用于匹配的 ID
 */
function extractEmployeeId(value) {
    if (typeof value === 'object' && value !== null && 'value' in value) {
        return value.value;
    }
    return value;
}
/**
 * 从 options 中查找人员 label
 * @param value - 员工值对象（可能是对象或字符串 ID）
 * @param options - 选项列表
 * @returns 找到返回 label，未找到返回 undefined
 */
function findEmployeeLabel(value, options) {
    if (!options || !Array.isArray(options) || options.length === 0) {
        return undefined;
    }
    const searchValue = extractEmployeeId(value);
    // options 中的 value 也可能是对象，需要提取 ID 进行比较
    const option = options.find((opt) => {
        const optValueId = extractEmployeeId(opt.value);
        return optValueId === searchValue;
    });
    return option === null || option === void 0 ? void 0 : option.label;
}
