var compilerTriggerTimeoutID; function triggerCompile(d, func) { if (compilerTriggerTimeoutID !== null) { window.clearTimeout(compilerTriggerTimeoutID); } compilerTriggerTimeoutID = window.setTimeout(function () { try { var output = transpileModule(d, { module: ts.ModuleKind.AMD, target: ts.ScriptTarget.ES5, noLib: true, noResolve: true, suppressOutputPathCheck: true }); if (typeof output === "string") { func(output); } } catch (e) { showError(e.message, e); } }, 100); } function transpileModule(input, options) { var inputFileName = options.jsx ? "module.tsx" : "module.ts"; var sourceFile = ts.createSourceFile(inputFileName, input, options.target || ts.ScriptTarget.ES5); // Output var outputText; var program = ts.createProgram([inputFileName], options, { getSourceFile: function (fileName) { return fileName.indexOf("module") === 0 ? sourceFile : undefined; }, writeFile: function (_name, text) { outputText = text; }, getDefaultLibFileName: function () { return "lib.d.ts"; }, useCaseSensitiveFileNames: function () { return false; }, getCanonicalFileName: function (fileName) { return fileName; }, getCurrentDirectory: function () { return ""; }, getNewLine: function () { return "\r\n"; }, fileExists: function (fileName) { return fileName === inputFileName; }, readFile: function () { return ""; }, directoryExists: function () { return true; }, getDirectories: function () { return []; } }); // Emit program.emit(); if (outputText === undefined) { throw new Error("Output generation failed"); } return outputText; } function getRunCode(jsEditor, callBack) { triggerCompile(jsEditor.getValue(), function(result) { callBack(result + "var createScene = function() { return Playground.CreateScene(engine, engine.getRenderingCanvas()); }") }); } var defaultScene = "scripts/basic scene.txt"; var monacoMode = "typescript";