diff --git a/Makefile.dryice.js b/Makefile.dryice.js index 7674c8c7..74694852 100755 --- a/Makefile.dryice.js +++ b/Makefile.dryice.js @@ -91,11 +91,12 @@ copy({ { root: aceHome + '/lib', include: /.*\.js$/, - exclude: /tests?\/|theme\/|mode\// + exclude: /tests?\/|theme\/|mode\/|ace\/worker\/host\.js/ }, { base: aceHome + '/lib/', path: 'ace/theme/textmate.js' }, { base: aceHome + '/lib/', path: 'ace/mode/text.js' }, { base: aceHome + '/lib/', path: 'ace/mode/javascript.js' }, + { base: aceHome + '/lib/', path: 'ace/mode/javascript_worker.js' }, { base: aceHome + '/lib/', path: 'ace/mode/text_highlight_rules.js' }, { base: aceHome + '/lib/', path: 'ace/mode/javascript_highlight_rules.js' }, { base: aceHome + '/lib/', path: 'ace/mode/doc_comment_highlight_rules.js' }, @@ -121,7 +122,6 @@ copy({ source: [ 'build_support/mini_require.js', pilot, - // cockpit, ace, 'build_support/boot.js' ], @@ -146,7 +146,14 @@ copy({ dest: 'build/ace-uncompressed.js' }); - +// Create worker bootstrap code +copy({ + source: "lib/ace/worker/host.js", + filter: [function(data) { + return data + "\nimportScripts('ace-uncompressed.js')"; + }], + dest: 'build/host.js' +}); diff --git a/build_support/boot.js b/build_support/boot.js index f61e91d6..df2ab0ff 100644 --- a/build_support/boot.js +++ b/build_support/boot.js @@ -35,41 +35,45 @@ * * ***** END LICENSE BLOCK ***** */ -var deps = [ "pilot/fixoldbrowsers", "pilot/plugin_manager", "pilot/settings", - "pilot/environment" ]; - -require(deps, function() { - var catalog = require("pilot/plugin_manager").catalog; - catalog.registerPlugins([ "pilot/index" ]); -}); - -var ace = { - edit: function(el) { - if (typeof(el) == "string") { - el = document.getElementById(el); - } - var env = require("pilot/environment").create(); +// don't define it in a worker. +if (window.document) { + + var deps = [ "pilot/fixoldbrowsers", "pilot/plugin_manager", "pilot/settings", + "pilot/environment" ]; + + require(deps, function() { var catalog = require("pilot/plugin_manager").catalog; - catalog.startupPlugins({ env: env }).then(function() { - var EditSession = require("ace/edit_session").EditSession; - var JavaScriptMode = require("ace/mode/javascript").Mode; - var UndoManager = require("ace/undomanager").UndoManager; - var Editor = require("ace/editor").Editor; - var Renderer = require("ace/virtual_renderer").VirtualRenderer; - var theme = require("ace/theme/textmate"); - - var doc = new EditSession(el.innerHTML); - el.innerHTML = ''; - doc.setMode(new JavaScriptMode()); - doc.setUndoManager(new UndoManager()); - env.document = doc; - env.editor = new Editor(new Renderer(el, theme)); - env.editor.setSession(doc); - env.editor.resize(); - window.addEventListener("resize", function() { + catalog.registerPlugins([ "pilot/index" ]); + }); + + var ace = { + edit: function(el) { + if (typeof(el) == "string") { + el = document.getElementById(el); + } + var env = require("pilot/environment").create(); + var catalog = require("pilot/plugin_manager").catalog; + catalog.startupPlugins({ env: env }).then(function() { + var EditSession = require("ace/edit_session").EditSession; + var JavaScriptMode = require("ace/mode/javascript").Mode; + var UndoManager = require("ace/undomanager").UndoManager; + var Editor = require("ace/editor").Editor; + var Renderer = require("ace/virtual_renderer").VirtualRenderer; + var theme = require("ace/theme/textmate"); + + var doc = new EditSession(el.innerHTML); + el.innerHTML = ''; + doc.setMode(new JavaScriptMode()); + doc.setUndoManager(new UndoManager()); + env.document = doc; + env.editor = new Editor(new Renderer(el, theme)); + env.editor.setSession(doc); env.editor.resize(); - }, false); - el.env = env; - }); - } -}; + window.addEventListener("resize", function() { + env.editor.resize(); + }, false); + el.env = env; + }); + } + }; +} \ No newline at end of file diff --git a/build_support/mini_require.js b/build_support/mini_require.js index 9500fbc2..25069325 100644 --- a/build_support/mini_require.js +++ b/build_support/mini_require.js @@ -35,59 +35,64 @@ * * ***** END LICENSE BLOCK ***** */ -function require(module, callback) { +// don't define it in a worker. There we have a different implementation +if (window.document) { - if (Array.isArray(module)) { - var params = []; - module.forEach(function(m) { - params.push(require._lookup(m)); - }, this); - - if (callback) { - callback.apply(null, params); + window.require = function(module, callback) { + + if (Array.isArray(module)) { + var params = []; + module.forEach(function(m) { + params.push(require._lookup(m)); + }, this); + + if (callback) { + callback.apply(null, params); + } + } + + if (typeof module === 'string') { + payload = require._lookup(module); + if (callback) { + callback(); + } + return payload; } } - - if (typeof module === 'string') { - payload = require._lookup(module); - if (callback) { - callback(); + require.modules = {}; + require.packaged = true; + + require._lookup = function(moduleName) { + var payload = require.modules[moduleName]; + var module_name = moduleName; + if (payload == null) { + console.error('Missing module: ' + moduleName); + console.trace(); } + + if (typeof payload === 'function') { + var exports = {}; + var module = { + id: moduleName, + uri: '' + }; + payload(require, exports, module); + payload = exports; + // cache the resulting module object for next time + require.modules[module_name] = payload; + } + return payload; + }; + + window.define = function(module, payload) { + if (typeof module !== 'string') { + console.error('dropping module because define wasn\'t munged.'); + console.trace(); + return; + } + + // console.log('defining module: ' + module + ' as a ' + typeof payload); + require.modules[module] = payload; } -} -require.modules = {}; - -require._lookup = function(moduleName) { - var payload = require.modules[moduleName]; - var module_name = moduleName; - if (payload == null) { - console.error('Missing module: ' + moduleName); - console.trace(); - } - - if (typeof payload === 'function') { - var exports = {}; - var module = { - id: moduleName, - uri: '' - }; - payload(require, exports, module); - payload = exports; - // cache the resulting module object for next time - require.modules[module_name] = payload; - } - - return payload; -}; - -function define(module, payload) { - if (typeof module !== 'string') { - console.error('dropping module because define wasn\'t munged.'); - console.trace(); - return; - } - - // console.log('defining module: ' + module + ' as a ' + typeof payload); - require.modules[module] = payload; -} +} \ No newline at end of file