import React from 'react';
import { FieldTagPopupWrapper } from '../../field-tag-popup-wrapper';
import { getDisplayValueFromFormMap } from './display/form-map-display-utils';
/**
 * 创建字段 tag 的 slot 配置
 * @param fieldKey - 字段 key
 * @param fieldConfig - 字段配置
 * @param customRender - 自定义渲染函数（可选，如果不提供则使用默认的 FieldTagPopupWrapper）
 * @param initialValue - 初始值（可选，用于常用查询条件等场景）
 * @param options - 后端返回的 options 数组（可选，用于常用查询条件场景）
 * @returns SlotConfigType 配置对象
 */
export function createFieldTagSlotConfig(fieldKey, fieldConfig, customRender, initialValue, options) {
    const fieldTitle = fieldConfig.title || fieldKey;
    return {
        type: 'custom',
        key: fieldKey,
        props: {
            // 保存 fieldConfig 以便在 customRender 中使用
            fieldConfig,
            fieldTitle,
            // 初始值需要放在 props.value 中，buildSlotValues 会从这里读取
            ...(initialValue !== undefined ? { value: initialValue } : {}),
            // 保存 options（常用查询条件场景，通过 options 的存在来判断是否需要初始化 formMap）
            ...(options ? { options } : {}),
            params: {
                name: fieldTitle,
                dataBaseName: fieldKey,
                values: [],
                dataBaseValues: [],
            },
        },
        customRender: customRender ||
            ((value, onValueChange, renderProps, item, formMapRef, onFormMapUpdate) => {
                // 默认使用 FieldTagPopupWrapper
                return (React.createElement(FieldTagPopupWrapper, { value: value, onValueChange: onValueChange, renderProps: renderProps, item: item, formMapRef: formMapRef, onFormMapUpdate: onFormMapUpdate }));
            }),
        formatResult: (value, slotConfig, formMapRef) => {
            // 使用统一的 formMap 缓存查找 label
            const displayValue = getDisplayValueFromFormMap(value, fieldKey, formMapRef, fieldConfig);
            return `${fieldTitle}: ${displayValue}`;
        },
    };
}
