Spaces:
Running on Zero
Running on Zero
File size: 2,805 Bytes
8db8202 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | // Ensure Markmap libraries are loaded from CDN
const { markmap } = window;
const { Markmap, loadCSS, loadJS } = markmap;
const { Transformer } = window.markmap;
// Create Transformer instance
const transformer = new Transformer();
// Initialize Markmap on the SVG element
let mm;
document.addEventListener('DOMContentLoaded', () => {
mm = Markmap.create('#markmap');
// Initial dummy data to show something beautiful right away
const initialMarkdown = `
# γγ€γ³γγγγθͺεηζ
## δ½ΏγζΉ
- ε·¦ε΄γ«ζη« γε
₯εγγΎγ
- γγγγγηζγγγΏγ³γζΌγγΎγ
## ηΉεΎ΄
- AIγζθγηθ§£γγ¦θͺεγ§ζ§ι ε
- ε°η¨γ«γΉγΏγ AIοΌedha 1.0 3BοΌγ«γγζ
ε ±ζ½εΊ
`;
renderMindMap(initialMarkdown);
});
// Function to render Markdown to MindMap
function renderMindMap(markdownContent) {
// 1. Transform markdown to Markmap internal format
const { root, features } = transformer.transform(markdownContent);
// 2. Load necessary assets for features (like Katex or highlight.js) if used
const { styles, scripts } = transformer.getUsedAssets(features);
if (styles) loadCSS(styles);
if (scripts) loadJS(scripts, { getMarkmap: () => markmap });
// 3. Update the Markmap instance with new data
mm.setData(root);
mm.fit(); // Automatically fit to screen
}
// Event Listeners
const generateBtn = document.getElementById('generateBtn');
const inputText = document.getElementById('inputText');
const loadingDiv = document.getElementById('loading');
generateBtn.addEventListener('click', async () => {
const text = inputText.value.trim();
if (!text) {
alert("Please enter some text to generate a map.");
return;
}
// Show loading
generateBtn.disabled = true;
generateBtn.classList.add('hidden');
loadingDiv.classList.remove('hidden');
try {
// --- PHASE 3: Real API Call ---
console.log("Sending request to backend...");
const response = await fetch('/generate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ text: text })
});
if (!response.ok) {
throw new Error('API error: ' + response.status);
}
const data = await response.json();
console.log("β
RAW BACKEND RESPONSE:", data.markdown);
// Render the Markdown returned by the Python backend
renderMindMap(data.markdown);
} catch (error) {
alert("Error occurred: " + error.message);
} finally {
// Hide loading
generateBtn.disabled = false;
generateBtn.classList.remove('hidden');
loadingDiv.classList.add('hidden');
}
});
|