123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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";
|