"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSchemaUpdate = void 0;
const react_1 = __importDefault(require("react"));
const isEqual_1 = __importDefault(require("lodash/isEqual"));
const stark_data_1 = require("@ice/stark-data");
const event_constants_1 = require("../../../components/cn-ai-agent/constants/event-constants");
/**
 * 自定义 Hook：监听 fieldMapData 变化并发送 schema 更新事件
 * 只有当 schema 真正变化时才发送事件，避免循环渲染
 */
const useSchemaUpdate = (fieldMapData, tableId) => {
    // 使用 useMemo 生成稳定的 schema 对象
    const tableSchema = react_1.default.useMemo(() => {
        if (!fieldMapData) {
            return undefined;
        }
        return {
            type: 'object',
            properties: fieldMapData,
        };
    }, [fieldMapData]);
    // 使用 useRef 存储上一次的 schema 对象，用于深度比较
    const prevSchemaRef = react_1.default.useRef(undefined);
    const listEventNames = react_1.default.useMemo(() => (0, event_constants_1.buildCnAiListEventNames)((0, event_constants_1.normalizeCnAiListInstanceKey)(String(tableId !== null && tableId !== void 0 ? tableId : ''))), [tableId]);
    // 监听 schema 变化并发送事件
    react_1.default.useEffect(() => {
        // 使用深度比较判断 schema 是否真正变化
        if (!(0, isEqual_1.default)(tableSchema, prevSchemaRef.current)) {
            prevSchemaRef.current = tableSchema;
            if (tableSchema) {
                // 使用 setTimeout 延迟发送，避免在渲染过程中更新 state
                setTimeout(() => {
                    stark_data_1.event.emit(listEventNames.SCHEMA_UPDATE, tableSchema);
                }, 0);
            }
        }
    }, [tableSchema, listEventNames]);
};
exports.useSchemaUpdate = useSchemaUpdate;
