// 文件节点类型
export const NODE_TYPES = {
  FOLDER: 'folder',
  FILE: 'file'
};

// 从预生成的数据中读取目录树
export async function readDirectoryTree() {
  try {
    const response = await fetch('/src/data/directoryTree.json');
    if (!response.ok) {
      throw new Error('Failed to load directory tree');
    }
    const data = await response.json();
    
    // 递归添加 isExpanded 属性
    function addExpandedProperty(nodes) {
      return nodes.map(node => ({
        ...node,
        isExpanded: false,
        children: node.children ? addExpandedProperty(node.children) : []
      }));
    }
    
    return addExpandedProperty(data);
  } catch (error) {
    console.error('Error loading directory tree:', error);
    return [];
  }
}

// 从预生成的数据中读取Markdown文件内容
export async function readMarkdownFile(relativePath) {
  try {
    const response = await fetch('/src/data/fileContents.json');
    if (!response.ok) {
      throw new Error('Failed to load file contents');
    }
    const data = await response.json();
    
    const content = data[relativePath];
    if (content) {
      return content;
    }
    
    // 如果没有找到具体内容，返回一个提示
    return `# ${relativePath.split('/').pop().replace('.md', '')}

文件内容未找到或加载失败。

请检查文件路径：\`${relativePath}\`

如果这是一个新文件，请重新运行构建过程以更新数据。`;
  } catch (error) {
    console.error('Error loading file content:', error);
    return `# 加载错误

无法加载文件内容，请检查网络连接或重新构建项目。

错误信息：${error.message}`;
   }
}



// 生成面包屑导航
export function generateBreadcrumbs(filePath) {
  if (!filePath) return [];
  
  const parts = filePath.split('/');
  const breadcrumbs = [];
  
  for (let i = 0; i < parts.length; i++) {
    const name = parts[i];
    const path = parts.slice(0, i + 1).join('/');
    breadcrumbs.push({ name, path });
  }
  
  return breadcrumbs;
}

// 获取文件的标题（从文件名或内容中提取）
export function getFileTitle(filename, content = '') {
  // 首先尝试从内容中提取第一个标题
  const titleMatch = content.match(/^#\s+(.+)$/m);
  if (titleMatch) {
    return titleMatch[1].trim();
  }
  
  // 如果没有找到标题，使用文件名（去掉.md扩展名）
  return filename.replace(/\.md$/, '');
}