"use strict";
/**
 * 单元格事件工具函数
 * @description 提取单元格信息并触发选中事件，避免代码重复
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.emitCellSelectEvent = emitCellSelectEvent;
const stark_data_1 = require("@ice/stark-data");
const event_constants_1 = require("../../../../../../cn-ai-agent/constants/event-constants");
const text_extractors_1 = require("../cell-format/text-extractors");
/**
 * 提取单元格信息并触发选中事件
 * @param columnId - 列ID
 * @param currentValue - 当前单元格值
 * @param originalRow - 原始行数据
 * @param actualRowId - 实际行ID（主键值）
 * @param mouseEvent - 鼠标事件对象
 * @param dataModel - 数据模型实例（用于获取列定义和 processedColumnMap）
 * @param columns - 列配置数组（可选，用于兼容 useCellEditing hook）
 * @param eventNames - 当前实例事件频道（多 Tab 隔离）；默认与单实例历史行为一致
 */
function emitCellSelectEvent(columnId, currentValue, originalRow, actualRowId, mouseEvent, dataModel, columns, eventNames = event_constants_1.EVENT_NAMES) {
    var _a, _b, _c;
    let columnName;
    let displayValue = currentValue;
    try {
        // 优先从 dataModel 获取列定义和 processedColumn
        let column;
        let processedColumn;
        if (dataModel) {
            column = (_a = dataModel.columnDefinitions) === null || _a === void 0 ? void 0 : _a.find((col) => col.dataIndex === columnId);
            processedColumn = (_b = dataModel.processedColumnMap) === null || _b === void 0 ? void 0 : _b.get(columnId);
            columnName = column === null || column === void 0 ? void 0 : column.title;
        }
        else if (columns) {
            // 兼容 useCellEditing hook 的场景
            column = columns.find((col) => col.dataIndex === columnId);
        }
        // 提取格式化后的显示值
        if (column) {
            const result = (0, text_extractors_1.extractCellTextValue)(currentValue, column, originalRow, processedColumn, undefined, 0);
            if (result.text && result.text !== '--') {
                displayValue = result.text;
            }
        }
        // 如果还没有列名，尝试从 DOM 获取
        if (!columnName) {
            const clickedCell = mouseEvent.target.closest('td');
            if (clickedCell) {
                const row = clickedCell.closest('tr');
                if (row) {
                    const cellIndex = Array.from(row.children).indexOf(clickedCell);
                    const headerRow = document.querySelector('thead tr');
                    if (headerRow) {
                        const headerCells = Array.from(headerRow.children);
                        if (headerCells[cellIndex]) {
                            columnName = ((_c = headerCells[cellIndex].textContent) === null || _c === void 0 ? void 0 : _c.trim()) || undefined;
                        }
                    }
                }
            }
        }
    }
    catch (error) {
        // 如果提取失败，使用原始值
    }
    // 触发自定义事件，通知 AI Agent 组件单元格被选中
    stark_data_1.event.emit(eventNames.CELL_SELECT, {
        type: 'cell',
        rowId: actualRowId,
        columnId,
        columnName,
        value: displayValue,
        rowData: originalRow,
    });
}
