/**
 * LiteDesign 组件库类型定义
 * 定义页面装修支持的所有组件类型及其默认配置
 */

const COMPONENT_TYPES = [
  { type: 'swiper', name: '轮播图', defaultConfig: { images: [], interval: 3000 } },
  { type: 'product_grid', name: '商品橱窗', defaultConfig: { title: '推荐商品', source: 'auto', count: 6, layout: 'double' } },
  { type: 'nav_grid', name: '分类导航', defaultConfig: { items: [], columns: 4 } },
  { type: 'coupon_entry', name: '优惠券', defaultConfig: { title: '领券中心', source: 'all' } },
  { type: 'seckill_entry', name: '秒杀活动', defaultConfig: { title: '限时秒杀', activity_id: null } },
  { type: 'notice_bar', name: '图文公告', defaultConfig: { text: '欢迎光临', bg_color: '#FFF3CD' } },
  { type: 'divider', name: '分割线', defaultConfig: { style: 'solid', margin: '10px 0' } },
  { type: 'title_bar', name: '标题栏', defaultConfig: { title: '标题', more_text: '', more_link: '' } },
  { type: 'image_ad', name: '图片广告', defaultConfig: { image: '', link: '', ratio: 2 } },
  { type: 'spacer', name: '空白占位', defaultConfig: { height: 10 } }
];

/**
 * 获取组件类型的默认配置
 * @param {string} type 组件类型
 * @returns {object|null} 默认配置或null
 */
    // NOTE: COMPONENT_TYPES 仅 10 项，find + JSON 深拷贝是标准写法，无性能问题

function getDefaultConfig(type) {
  const found = COMPONENT_TYPES.find(c => c.type === type);
  return found ? JSON.parse(JSON.stringify(found.defaultConfig)) : null;
}

/**
 * 获取组件类型的显示名称
 * @param {string} type 组件类型
 * @returns {string} 组件名称
 */
function getComponentName(type) {
  const found = COMPONENT_TYPES.find(c => c.type === type);
  return found ? found.name : type;
}

module.exports = { COMPONENT_TYPES, getDefaultConfig, getComponentName };
