Files
minimax/webui/src/utils/wasmLoader.ts
2025-10-29 21:02:56 -07:00

38 lines
976 B
TypeScript

// WASM loader for Rhai CodeMirror mode
import init, { RhaiMode, init_codemirror_pass } from '@/wasm/rhai-codemirror/rhai_codemirror.js';
let wasmInitialized = false;
let wasmModule: any = null;
export const loadRhaiWasm = async () => {
if (wasmInitialized) {
return wasmModule;
}
try {
// Initialize the WASM module
wasmModule = await init();
wasmInitialized = true;
return wasmModule;
} catch (error) {
console.error('Failed to load Rhai WASM module:', error);
throw error;
}
};
export const initRhaiMode = (CodeMirror: any) => {
if (!wasmInitialized || !wasmModule) {
throw new Error('WASM module not loaded. Call loadRhaiWasm() first.');
}
// Initialize CodeMirror Pass for the WASM module
init_codemirror_pass(CodeMirror.Pass);
// Define the Rhai mode using the WASM-based RhaiMode
CodeMirror.defineMode("rhai", (config: any) => {
return new RhaiMode(config.indentUnit || 4);
});
};
export { RhaiMode };