/**
 * Office 文件类型检测工具
 */

export const OfficeFormat = {
  DOCX: 'docx',
  XLSX: 'xlsx',
  PPTX: 'pptx'
}

/**
 * 支持的 Office 文件扩展名
 */
export const SUPPORTED_EXTENSIONS = {
  [OfficeFormat.DOCX]: ['.docx'],
  [OfficeFormat.XLSX]: ['.xlsx'],
  [OfficeFormat.PPTX]: ['.pptx']
}

/**
 * MIME 类型映射
 */
export const MIME_TYPES = {
  [OfficeFormat.DOCX]: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  [OfficeFormat.XLSX]: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  [OfficeFormat.PPTX]: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
}

/**
 * 检测文件是否为 Office 文件
 */
export function isOfficeFile(file) {
  if (!file) return false
  
  const filename = file.name?.toLowerCase() || ''
  const type = file.type?.toLowerCase() || ''
  
  // 检查扩展名
  for (const [format, exts] of Object.entries(SUPPORTED_EXTENSIONS)) {
    if (exts.some(ext => filename.endsWith(ext))) {
      return true
    }
  }
  
  // 检查 MIME 类型
  for (const [format, mime] of Object.entries(MIME_TYPES)) {
    if (type === mime) {
      return true
    }
  }
  
  return false
}

/**
 * 获取文件的 Office 格式
 */
export function getOfficeFormat(file) {
  if (!file) return null
  
  const filename = file.name?.toLowerCase() || ''
  const type = file.type?.toLowerCase() || ''
  
  // 检查扩展名
  for (const [format, exts] of Object.entries(SUPPORTED_EXTENSIONS)) {
    if (exts.some(ext => filename.endsWith(ext))) {
      return format
    }
  }
  
  // 检查 MIME 类型
  for (const [format, mime] of Object.entries(MIME_TYPES)) {
    if (type === mime) {
      return format
    }
  }
  
  return null
}

export default {
  OfficeFormat,
  isOfficeFile,
  getOfficeFormat,
  SUPPORTED_EXTENSIONS,
  MIME_TYPES
}
