// app/static/js/utils.js - 辅助函数 /** * 将文件转换为 Base64 编码字符串。 * @param {File} file - 要转换的文件对象。 * @returns {Promise} - Base64 编码的字符串(不包含前缀)。 */ export async function fileToBase64(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = () => resolve(reader.result.split(',')[1]); reader.onerror = error => reject(error); reader.readAsDataURL(file); }); } /** * 从文本中提取 Mermaid 代码块,并返回剩余文本。 * @param {string} text - 包含 Mermaid 代码的文本。 * @returns {{cleanedText: string, mermaidCodes: string[]}} - 包含清理后的文本和提取的Mermaid代码数组。 */ export function extractContent(text) { const mermaidCodes = []; let cleanedText = text; // 提取 Mermaid 代码块 const mermaidRegex = /```mermaid\n([\s\S]*?)\n```/g; let mermaidMatch; // 使用一个临时变量来迭代,避免修改原始字符串导致正则匹配问题 let tempText = cleanedText; while ((mermaidMatch = mermaidRegex.exec(tempText)) !== null) { mermaidCodes.push(mermaidMatch[1]); // 从 cleanedText 中移除已提取的 Mermaid 代码块 // 注意:这里需要确保移除的是原始位置的匹配内容 cleanedText = cleanedText.replace(mermaidMatch[0], ''); } return { cleanedText: cleanedText.trim(), mermaidCodes: mermaidCodes }; }