/**
 * 页面模板:
 * 详情页定义
 */

import type { CommonArticleDetailProps } from "../../details.vue";
import type { CommonCategoryDetailProps } from "../CommonCategoryDetail.vue";
import type { IHomeCommonCategoryListDefine, IHomeCommonCategoryListTabNestCategoryItemDefine } from "./List";

/**
 * 页面模板:详情页定义
 */
export interface IHomeCommonCategoryDetailDefine {
  type: 'Details',
  props: Omit<CommonCategoryDetailProps, 'load'|'extraTabs'> & {
    /**
     * 列表选项卡定义
     */
    tabs?: IHomeCommonCategoryDetailTabItemDefine[],
    /**
     * 自定义标签页名称ID映射
     */
    customTabNameIdMap?: Record<string, string>,
    /**
     * 自定义标签页动态可见性判断ID映射 {d.id}:{visibleVia[1]}
     */
    customTabVisibleViaIdMap?: Record<string, boolean>,
  },
}


/**
 * 页面模板:默认详情页定义
 */
export interface IHomeCommonArticleDetailDefine {
  type: 'CommonDetails',
  props: Omit<CommonArticleDetailProps, 'load'> & {
    
  },
}

/**
 * TAB定义 - 类型：嵌套子分类 - 子分类项定义
 */
export type IHomeCommonCategoryDetailTabItemDefine = 
    (IHomeCommonCategoryDetailTabItemInternalDefine
      | IHomeCommonCategoryDetailTabItemListDefine 
      | IHomeCommonCategoryDetailTabItemNestCategoryDefine
      | IHomeCommonCategoryDetailTabItemRichDefine
      | IHomeCommonCategoryDetailTabItemMapDefine
    ) & IHomeCommonCategoryDetailTabItemBaseDefine;

/**
 * TAB定义 - 类型：嵌套子分类 - 通用定义
 */
export interface IHomeCommonCategoryDetailTabItemBaseDefine {
  /**
   * 是否可见
   * @default true
   */
  visible?: boolean,
  /**
   * 标签页文本
   */
  text: string,
  /**
   * 标签页宽度
   * @default 180
   */
  width?: number,
  /**
   * 标签页动态可见性判断方式
     * * auto: 自动判断
     * * expression: 表达式判断 格式参考 getDynamicScript().execute
     * * idMap: 标签页ID映射判断 格式：id:categoy (category为visibleVia中定义的分类ID)
   */
  visibleVia?: string,

  /**
   * 判断数据键
   */
  key: string,
  type: string,
}

/**
 * TAB定义 - 类型：嵌套子分类 - 通用定义
 */
export interface IHomeCommonCategoryDetailTabItemInternalDefine {
  /**
   * 标签页内容显示类型
   * * 'intro' - 简介
   * * 'images' - 相册图片
   * * 'video' - 单视频
   * * 'audio' - 单音频
   */
  type: 'intro'|'images'|'video'|'audio',
  /**
   * 前缀文字
   */
  prefix?: string,
}
/**
 * TAB定义 - 类型：嵌套子分类 - 列表类型
 */
export interface IHomeCommonCategoryDetailTabItemListDefine {
  type: 'list',
  /**
   * 列表数据
   */
  define: IHomeCommonCategoryListDefine,
}

/**
 * TAB定义 - 类型：嵌套子分类 - 富文本类型
 */
export interface IHomeCommonCategoryDetailTabItemRichDefine {
  type: 'rich',
  /**
   * 数据键
   */
  key: string,
}


/**
 * TAB定义 - 类型：嵌套子分类 - 地图位置显示类型
 */
export interface IHomeCommonCategoryDetailTabItemMapDefine {
  type: 'map',
}

/**
 * TAB定义 - 类型：嵌套子分类 - 嵌套子分类类型
 */
export interface IHomeCommonCategoryDetailTabItemNestCategoryDefine {
  type: 'nestCategory',
  /**
   * 首页分类项
   */
  categorys: IHomeCommonCategoryListTabNestCategoryItemDefine[],
}