import { defHttp } from '@/utils/http/axios'

/**
 * 查询书签
 */
export interface BookmarkQueryRespVo {

  /** 标识 */
  name: string

  /** 类型 */
  type: BookmarkType
}

export interface BookmarkGenData {
  /** 书签名称（标识） */
  name: string

  /** 扩展类型 */
  extData: AbstractExData
}

/** 书签需要替换的数据类型（文本，图片，图片（描述）） */
export type BookmarkType = 'TEXT' | 'PICTURE' | 'PICTURE_DESC'

/** 图片提供的data类型，下载地址，base64文本，服务器绝对路径 */
export type PictureProvideDataType = 'DOWNLOAD_URL' | 'BASE64' | 'ABSOLUTE_PATH'

/**
 * 书签数据类型
 */
interface AbstractExData {
  type: BookmarkType
  value: string
}

/**
 * 图片数据
 */
export interface PictureExData extends AbstractExData {
  width?: number
  height?: number
  pictureName: string
  dataType: PictureProvideDataType
}

/**
 * 文本数据
 */
export interface TextExData extends AbstractExData {
  bold: boolean
  italic: boolean
}

/**
 * 查询文件中所有书签
 * @param fileId 文件id
 */
export function getAllBookmarks(fileId: string | number) {
  return defHttp.post<BookmarkQueryRespVo[]>({ url: `/infra/word/bookmark/file/${fileId}` })
}

/**
 * 执行书签替换
 * @param fileId 文件id
 * @param data 数据
 */
export function getDoBookmarkReplace(fileId: string | number, data: BookmarkGenData[]) {
  return defHttp.post({ url: `/infra/word/bookmark/file/${fileId}/generate`, data })
}
