12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- (function() {
- var LOADER_OPTS = (function() {
- function parseQueryString() {
- var str = window.location.search;
- str = str.replace(/^\?/, '');
- var pieces = str.split(/&/);
- var result = {};
- pieces.forEach(function(piece) {
- var config = piece.split(/=/);
- result[config[0]] = config[1];
- });
- return result;
- }
- var overwrites = parseQueryString();
- var result = {};
- result['editor'] = overwrites['editor'] || 'npm';
- METADATA.PLUGINS.map(function(plugin) {
- result[plugin.name] = overwrites[plugin.name] || 'npm';
- });
- return result;
- })();
- function Component(name, modulePrefix, paths, contrib) {
- this.name = name;
- this.modulePrefix = modulePrefix;
- this.paths = paths;
- this.contrib = contrib;
- this.selectedPath = LOADER_OPTS[name];
- }
- Component.prototype.getResolvedPath = function() {
- var resolvedPath = this.paths[this.selectedPath];
- if (this.selectedPath === 'npm') {
- resolvedPath = '/monaco-editor/' + resolvedPath;
- }
- return resolvedPath;
- };
- Component.prototype.generateLoaderConfig = function(dest) {
- dest[this.modulePrefix] = this.getResolvedPath();
- };
- var RESOLVED_CORE = new Component('editor', 'vs', METADATA.CORE.paths);
- self.RESOLVED_CORE_PATH = RESOLVED_CORE.getResolvedPath();
- var RESOLVED_PLUGINS = METADATA.PLUGINS.map(function(plugin) {
- return new Component(plugin.name, plugin.modulePrefix, plugin.paths, plugin.contrib);
- });
- METADATA = null;
- function loadScript(path, callback) {
- var script = document.createElement('script');
- script.onload = callback;
- script.async = true;
- script.type = 'text/javascript';
- script.src = path;
- document.head.appendChild(script);
- }
- self.loadEditor = function(callback, PATH_PREFIX) {
- PATH_PREFIX = PATH_PREFIX || '';
- loadScript(PATH_PREFIX + RESOLVED_CORE.getResolvedPath() + '/loader.js', function() {
- var loaderPathsConfig = {};
- RESOLVED_PLUGINS.forEach(function(plugin) {
- plugin.generateLoaderConfig(loaderPathsConfig);
- });
- RESOLVED_CORE.generateLoaderConfig(loaderPathsConfig);
- console.log('LOADER CONFIG: ');
- console.log(JSON.stringify(loaderPathsConfig, null, '\t'));
- require.config({
- paths: loaderPathsConfig
- });
- require(['vs/editor/editor.main'], function() {
- // At this point we've loaded the monaco-editor-core
- require(RESOLVED_PLUGINS.map(function(plugin) { return plugin.contrib; }), function() {
- // At this point we've loaded all the plugins
- callback();
- });
- });
- });
- }
- })();
|