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