let loaded = false; function loadScript(src) { return new Promise((resolve, reject) => { if (document.querySelector(`script[src="${src}"]`)) { resolve(); return; } const savedDefine = window.define; window.define = undefined; const s = document.createElement('script'); s.src = src; s.onload = () => { window.define = savedDefine; resolve(); }; s.onerror = () => { window.define = savedDefine; reject(new Error(`Failed to load ${src}`)); }; document.head.appendChild(s); }); } export async function initEmmet() { if (loaded) return; try { await loadScript('https://unpkg.com/emmet-monaco-es/dist/emmet-monaco.min.js'); if (window.emmetMonaco) { emmetMonaco.emmetHTML(monaco); emmetMonaco.emmetCSS(monaco); emmetMonaco.emmetJSX(monaco); loaded = true; } } catch (e) { console.warn('Emmet load failed:', e.message); } }