Files
fiddle/public/js/emmet.js
root 7f51af17a3 Add editor experience features: auto-run, layouts, resizable panels, Emmet, vim/emacs
- Auto-run toggle with localStorage persistence (toolbar checkbox)
- Layout selector: default, top/bottom, editor-only, preview-only
- Resizable panels via drag dividers with double-click reset
- Emmet abbreviation expansion for HTML, CSS, and JSX
- Vim and Emacs keybinding modes with lazy-loaded CDN libraries
- Shared preferences module for localStorage management
- Editor hooks for tab switch and mode change callbacks
2026-02-26 11:19:14 -06:00

30 lines
904 B
JavaScript

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);
}
}