/**
 * XList 类型 JSON 代码块解析器。
 * 解析结果：configName 传给 XList.queryParamsName，用于 getConfigByName(configName) 获取配置；data 传入 initialData。
 *
 * 支持的 JSON 格式：
 * 1. 完整格式：{ "type": "x-list", "configName": "aiConsultationSuggestionListConfig", "data": [...] }
 *    - configName：配置名，表示去哪里获取配置，用于区分同一种 x-list 的不同 JSON 块
 * 2. 临时格式：{ "type": "x-list", "data": [...] }，无 configName 时使用组件默认配置
 * 3. 纯数组：推断为 x-list，需配合 defaultConfigName 使用
 *
 * @param {any} parsed - 已解析的 JSON 对象
 * @param {string} [defaultConfigName] - 纯数组时的默认配置名
 * @returns {{ componentType: string, configName: string|null, data: Array } | null}
 */
export function parseXListBlock (parsed, defaultConfigName) {
  if (parsed == null) return null

  // 显式 type 格式：configName 可选，无配置时 XList 使用默认配置 + initialData
  if (parsed && typeof parsed === 'object' && !Array.isArray(parsed) && parsed.type) {
    const type = String(parsed.type).toLowerCase()
    if (type !== 'x-list') return null
    if (!Array.isArray(parsed.data)) return null
    const configName = parsed.configName && typeof parsed.configName === 'string'
      ? parsed.configName.trim()
      : (defaultConfigName || null)
    return {
      componentType: 'x-list',
      configName,
      data: parsed.data
    }
  }

  // 纯数组：需有默认 configName
  if (Array.isArray(parsed) && parsed.length > 0 && defaultConfigName) {
    return {
      componentType: 'x-list',
      configName: defaultConfigName,
      data: parsed
    }
  }

  return null
}
