
Previously, we were at an ACE editor published between 1.1.8 and 1.1.9. This caused multiple issues and was especially a problem for the upcoming pair programming feature. Further, updating ace is a long-time priority, see https://github.com/openHPI/codeocean/issues/250. Now, we are not yet updating to the latest version, but rather to the next minor version. This already contains breaking changes, and we are currently interested to keep the number of changes as low as possible. Further updating ACE might be still a future task. The new ACE version 1.2.0 is taken from this tag: https://github.com/ajaxorg/ace-builds/releases/tag/v1.2.0. We are using the src build (not minified, not in the noconflict version), since the same was used before as well. Further, we need to change our migration for storing editor events. Since the table is not yet used (in production), we also update the enum.
644 lines
20 KiB
JavaScript
644 lines
20 KiB
JavaScript
define("ace/ext/menu_tools/element_generator",["require","exports","module"], function(require, exports, module) {
|
|
'use strict';
|
|
module.exports.createOption = function createOption (obj) {
|
|
var attribute;
|
|
var el = document.createElement('option');
|
|
for(attribute in obj) {
|
|
if(obj.hasOwnProperty(attribute)) {
|
|
if(attribute === 'selected') {
|
|
el.setAttribute(attribute, obj[attribute]);
|
|
} else {
|
|
el[attribute] = obj[attribute];
|
|
}
|
|
}
|
|
}
|
|
return el;
|
|
};
|
|
module.exports.createCheckbox = function createCheckbox (id, checked, clss) {
|
|
var el = document.createElement('input');
|
|
el.setAttribute('type', 'checkbox');
|
|
el.setAttribute('id', id);
|
|
el.setAttribute('name', id);
|
|
el.setAttribute('value', checked);
|
|
el.setAttribute('class', clss);
|
|
if(checked) {
|
|
el.setAttribute('checked', 'checked');
|
|
}
|
|
return el;
|
|
};
|
|
module.exports.createInput = function createInput (id, value, clss) {
|
|
var el = document.createElement('input');
|
|
el.setAttribute('type', 'text');
|
|
el.setAttribute('id', id);
|
|
el.setAttribute('name', id);
|
|
el.setAttribute('value', value);
|
|
el.setAttribute('class', clss);
|
|
return el;
|
|
};
|
|
module.exports.createLabel = function createLabel (text, labelFor) {
|
|
var el = document.createElement('label');
|
|
el.setAttribute('for', labelFor);
|
|
el.textContent = text;
|
|
return el;
|
|
};
|
|
module.exports.createSelection = function createSelection (id, values, clss) {
|
|
var el = document.createElement('select');
|
|
el.setAttribute('id', id);
|
|
el.setAttribute('name', id);
|
|
el.setAttribute('class', clss);
|
|
values.forEach(function(item) {
|
|
el.appendChild(module.exports.createOption(item));
|
|
});
|
|
return el;
|
|
};
|
|
|
|
});
|
|
|
|
define("ace/ext/modelist",["require","exports","module"], function(require, exports, module) {
|
|
"use strict";
|
|
|
|
var modes = [];
|
|
function getModeForPath(path) {
|
|
var mode = modesByName.text;
|
|
var fileName = path.split(/[\/\\]/).pop();
|
|
for (var i = 0; i < modes.length; i++) {
|
|
if (modes[i].supportsFile(fileName)) {
|
|
mode = modes[i];
|
|
break;
|
|
}
|
|
}
|
|
return mode;
|
|
}
|
|
|
|
var Mode = function(name, caption, extensions) {
|
|
this.name = name;
|
|
this.caption = caption;
|
|
this.mode = "ace/mode/" + name;
|
|
this.extensions = extensions;
|
|
if (/\^/.test(extensions)) {
|
|
var re = extensions.replace(/\|(\^)?/g, function(a, b){
|
|
return "$|" + (b ? "^" : "^.*\\.");
|
|
}) + "$";
|
|
} else {
|
|
var re = "^.*\\.(" + extensions + ")$";
|
|
}
|
|
|
|
this.extRe = new RegExp(re, "gi");
|
|
};
|
|
|
|
Mode.prototype.supportsFile = function(filename) {
|
|
return filename.match(this.extRe);
|
|
};
|
|
var supportedModes = {
|
|
ABAP: ["abap"],
|
|
ABC: ["abc"],
|
|
ActionScript:["as"],
|
|
ADA: ["ada|adb"],
|
|
Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],
|
|
AsciiDoc: ["asciidoc|adoc"],
|
|
Assembly_x86:["asm"],
|
|
AutoHotKey: ["ahk"],
|
|
BatchFile: ["bat|cmd"],
|
|
C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp"],
|
|
C9Search: ["c9search_results"],
|
|
Cirru: ["cirru|cr"],
|
|
Clojure: ["clj|cljs"],
|
|
Cobol: ["CBL|COB"],
|
|
coffee: ["coffee|cf|cson|^Cakefile"],
|
|
ColdFusion: ["cfm"],
|
|
CSharp: ["cs"],
|
|
CSS: ["css"],
|
|
Curly: ["curly"],
|
|
D: ["d|di"],
|
|
Dart: ["dart"],
|
|
Diff: ["diff|patch"],
|
|
Dockerfile: ["^Dockerfile"],
|
|
Dot: ["dot"],
|
|
Dummy: ["dummy"],
|
|
DummySyntax: ["dummy"],
|
|
Eiffel: ["e"],
|
|
EJS: ["ejs"],
|
|
Elixir: ["ex|exs"],
|
|
Elm: ["elm"],
|
|
Erlang: ["erl|hrl"],
|
|
Forth: ["frt|fs|ldr"],
|
|
FTL: ["ftl"],
|
|
Gcode: ["gcode"],
|
|
Gherkin: ["feature"],
|
|
Gitignore: ["^.gitignore"],
|
|
Glsl: ["glsl|frag|vert"],
|
|
golang: ["go"],
|
|
Groovy: ["groovy"],
|
|
HAML: ["haml"],
|
|
Handlebars: ["hbs|handlebars|tpl|mustache"],
|
|
Haskell: ["hs"],
|
|
haXe: ["hx"],
|
|
HTML: ["html|htm|xhtml"],
|
|
HTML_Ruby: ["erb|rhtml|html.erb"],
|
|
INI: ["ini|conf|cfg|prefs"],
|
|
Io: ["io"],
|
|
Jack: ["jack"],
|
|
Jade: ["jade"],
|
|
Java: ["java"],
|
|
JavaScript: ["js|jsm"],
|
|
JSON: ["json"],
|
|
JSONiq: ["jq"],
|
|
JSP: ["jsp"],
|
|
JSX: ["jsx"],
|
|
Julia: ["jl"],
|
|
LaTeX: ["tex|latex|ltx|bib"],
|
|
Lean: ["lean|hlean"],
|
|
LESS: ["less"],
|
|
Liquid: ["liquid"],
|
|
Lisp: ["lisp"],
|
|
LiveScript: ["ls"],
|
|
LogiQL: ["logic|lql"],
|
|
LSL: ["lsl"],
|
|
Lua: ["lua"],
|
|
LuaPage: ["lp"],
|
|
Lucene: ["lucene"],
|
|
Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],
|
|
Markdown: ["md|markdown"],
|
|
Mask: ["mask"],
|
|
MATLAB: ["matlab"],
|
|
Maze: ["mz"],
|
|
MEL: ["mel"],
|
|
MUSHCode: ["mc|mush"],
|
|
MySQL: ["mysql"],
|
|
Nix: ["nix"],
|
|
ObjectiveC: ["m|mm"],
|
|
OCaml: ["ml|mli"],
|
|
Pascal: ["pas|p"],
|
|
Perl: ["pl|pm"],
|
|
pgSQL: ["pgsql"],
|
|
PHP: ["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp"],
|
|
Powershell: ["ps1"],
|
|
Praat: ["praat|praatscript|psc|proc"],
|
|
Prolog: ["plg|prolog"],
|
|
Properties: ["properties"],
|
|
Protobuf: ["proto"],
|
|
Python: ["py"],
|
|
R: ["r"],
|
|
RDoc: ["Rd"],
|
|
RHTML: ["Rhtml"],
|
|
Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],
|
|
Rust: ["rs"],
|
|
SASS: ["sass"],
|
|
SCAD: ["scad"],
|
|
Scala: ["scala"],
|
|
Scheme: ["scm|rkt"],
|
|
SCSS: ["scss"],
|
|
SH: ["sh|bash|^.bashrc"],
|
|
SJS: ["sjs"],
|
|
Smarty: ["smarty|tpl"],
|
|
snippets: ["snippets"],
|
|
Soy_Template:["soy"],
|
|
Space: ["space"],
|
|
SQL: ["sql"],
|
|
SQLServer: ["sqlserver"],
|
|
Stylus: ["styl|stylus"],
|
|
SVG: ["svg"],
|
|
Tcl: ["tcl"],
|
|
Tex: ["tex"],
|
|
Text: ["txt"],
|
|
Textile: ["textile"],
|
|
Toml: ["toml"],
|
|
Twig: ["twig"],
|
|
Typescript: ["ts|typescript|str"],
|
|
Vala: ["vala"],
|
|
VBScript: ["vbs|vb"],
|
|
Velocity: ["vm"],
|
|
Verilog: ["v|vh|sv|svh"],
|
|
VHDL: ["vhd|vhdl"],
|
|
XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],
|
|
XQuery: ["xq"],
|
|
YAML: ["yaml|yml"],
|
|
Django: ["html"]
|
|
};
|
|
|
|
var nameOverrides = {
|
|
ObjectiveC: "Objective-C",
|
|
CSharp: "C#",
|
|
golang: "Go",
|
|
C_Cpp: "C and C++",
|
|
coffee: "CoffeeScript",
|
|
HTML_Ruby: "HTML (Ruby)",
|
|
FTL: "FreeMarker"
|
|
};
|
|
var modesByName = {};
|
|
for (var name in supportedModes) {
|
|
var data = supportedModes[name];
|
|
var displayName = (nameOverrides[name] || name).replace(/_/g, " ");
|
|
var filename = name.toLowerCase();
|
|
var mode = new Mode(filename, displayName, data[0]);
|
|
modesByName[filename] = mode;
|
|
modes.push(mode);
|
|
}
|
|
|
|
module.exports = {
|
|
getModeForPath: getModeForPath,
|
|
modes: modes,
|
|
modesByName: modesByName
|
|
};
|
|
|
|
});
|
|
|
|
define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"], function(require, exports, module) {
|
|
"use strict";
|
|
require("ace/lib/fixoldbrowsers");
|
|
|
|
var themeData = [
|
|
["Chrome" ],
|
|
["Clouds" ],
|
|
["Crimson Editor" ],
|
|
["Dawn" ],
|
|
["Dreamweaver" ],
|
|
["Eclipse" ],
|
|
["GitHub" ],
|
|
["IPlastic" ],
|
|
["Solarized Light"],
|
|
["TextMate" ],
|
|
["Tomorrow" ],
|
|
["XCode" ],
|
|
["Kuroir"],
|
|
["KatzenMilch"],
|
|
["SQL Server" ,"sqlserver" , "light"],
|
|
["Ambiance" ,"ambiance" , "dark"],
|
|
["Chaos" ,"chaos" , "dark"],
|
|
["Clouds Midnight" ,"clouds_midnight" , "dark"],
|
|
["Cobalt" ,"cobalt" , "dark"],
|
|
["idle Fingers" ,"idle_fingers" , "dark"],
|
|
["krTheme" ,"kr_theme" , "dark"],
|
|
["Merbivore" ,"merbivore" , "dark"],
|
|
["Merbivore Soft" ,"merbivore_soft" , "dark"],
|
|
["Mono Industrial" ,"mono_industrial" , "dark"],
|
|
["Monokai" ,"monokai" , "dark"],
|
|
["Pastel on dark" ,"pastel_on_dark" , "dark"],
|
|
["Solarized Dark" ,"solarized_dark" , "dark"],
|
|
["Terminal" ,"terminal" , "dark"],
|
|
["Tomorrow Night" ,"tomorrow_night" , "dark"],
|
|
["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"],
|
|
["Tomorrow Night Bright","tomorrow_night_bright" , "dark"],
|
|
["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"],
|
|
["Twilight" ,"twilight" , "dark"],
|
|
["Vibrant Ink" ,"vibrant_ink" , "dark"]
|
|
];
|
|
|
|
|
|
exports.themesByName = {};
|
|
exports.themes = themeData.map(function(data) {
|
|
var name = data[1] || data[0].replace(/ /g, "_").toLowerCase();
|
|
var theme = {
|
|
caption: data[0],
|
|
theme: "ace/theme/" + name,
|
|
isDark: data[2] == "dark",
|
|
name: name
|
|
};
|
|
exports.themesByName[name] = theme;
|
|
return theme;
|
|
});
|
|
|
|
});
|
|
|
|
define("ace/ext/menu_tools/add_editor_menu_options",["require","exports","module","ace/ext/modelist","ace/ext/themelist"], function(require, exports, module) {
|
|
'use strict';
|
|
module.exports.addEditorMenuOptions = function addEditorMenuOptions (editor) {
|
|
var modelist = require('../modelist');
|
|
var themelist = require('../themelist');
|
|
editor.menuOptions = {
|
|
setNewLineMode: [{
|
|
textContent: "unix",
|
|
value: "unix"
|
|
}, {
|
|
textContent: "windows",
|
|
value: "windows"
|
|
}, {
|
|
textContent: "auto",
|
|
value: "auto"
|
|
}],
|
|
setTheme: [],
|
|
setMode: [],
|
|
setKeyboardHandler: [{
|
|
textContent: "ace",
|
|
value: ""
|
|
}, {
|
|
textContent: "vim",
|
|
value: "ace/keyboard/vim"
|
|
}, {
|
|
textContent: "emacs",
|
|
value: "ace/keyboard/emacs"
|
|
}, {
|
|
textContent: "textarea",
|
|
value: "ace/keyboard/textarea"
|
|
}, {
|
|
textContent: "sublime",
|
|
value: "ace/keyboard/sublime"
|
|
}]
|
|
};
|
|
|
|
editor.menuOptions.setTheme = themelist.themes.map(function(theme) {
|
|
return {
|
|
textContent: theme.caption,
|
|
value: theme.theme
|
|
};
|
|
});
|
|
|
|
editor.menuOptions.setMode = modelist.modes.map(function(mode) {
|
|
return {
|
|
textContent: mode.name,
|
|
value: mode.mode
|
|
};
|
|
});
|
|
};
|
|
|
|
|
|
});
|
|
|
|
define("ace/ext/menu_tools/get_set_functions",["require","exports","module"], function(require, exports, module) {
|
|
'use strict';
|
|
module.exports.getSetFunctions = function getSetFunctions (editor) {
|
|
var out = [];
|
|
var my = {
|
|
'editor' : editor,
|
|
'session' : editor.session,
|
|
'renderer' : editor.renderer
|
|
};
|
|
var opts = [];
|
|
var skip = [
|
|
'setOption',
|
|
'setUndoManager',
|
|
'setDocument',
|
|
'setValue',
|
|
'setBreakpoints',
|
|
'setScrollTop',
|
|
'setScrollLeft',
|
|
'setSelectionStyle',
|
|
'setWrapLimitRange'
|
|
];
|
|
['renderer', 'session', 'editor'].forEach(function(esra) {
|
|
var esr = my[esra];
|
|
var clss = esra;
|
|
for(var fn in esr) {
|
|
if(skip.indexOf(fn) === -1) {
|
|
if(/^set/.test(fn) && opts.indexOf(fn) === -1) {
|
|
opts.push(fn);
|
|
out.push({
|
|
'functionName' : fn,
|
|
'parentObj' : esr,
|
|
'parentName' : clss
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
return out;
|
|
};
|
|
|
|
});
|
|
|
|
define("ace/ext/menu_tools/generate_settings_menu",["require","exports","module","ace/ext/menu_tools/element_generator","ace/ext/menu_tools/add_editor_menu_options","ace/ext/menu_tools/get_set_functions"], function(require, exports, module) {
|
|
'use strict';
|
|
var egen = require('./element_generator');
|
|
var addEditorMenuOptions = require('./add_editor_menu_options').addEditorMenuOptions;
|
|
var getSetFunctions = require('./get_set_functions').getSetFunctions;
|
|
module.exports.generateSettingsMenu = function generateSettingsMenu (editor) {
|
|
var elements = [];
|
|
function cleanupElementsList() {
|
|
elements.sort(function(a, b) {
|
|
var x = a.getAttribute('contains');
|
|
var y = b.getAttribute('contains');
|
|
return x.localeCompare(y);
|
|
});
|
|
}
|
|
function wrapElements() {
|
|
var topmenu = document.createElement('div');
|
|
topmenu.setAttribute('id', 'ace_settingsmenu');
|
|
elements.forEach(function(element) {
|
|
topmenu.appendChild(element);
|
|
});
|
|
|
|
var el = topmenu.appendChild(document.createElement('div'));
|
|
var version = "1.2.0";
|
|
el.style.padding = "1em";
|
|
el.textContent = "Ace version " + version;
|
|
|
|
return topmenu;
|
|
}
|
|
function createNewEntry(obj, clss, item, val) {
|
|
var el;
|
|
var div = document.createElement('div');
|
|
div.setAttribute('contains', item);
|
|
div.setAttribute('class', 'ace_optionsMenuEntry');
|
|
div.setAttribute('style', 'clear: both;');
|
|
|
|
div.appendChild(egen.createLabel(
|
|
item.replace(/^set/, '').replace(/([A-Z])/g, ' $1').trim(),
|
|
item
|
|
));
|
|
|
|
if (Array.isArray(val)) {
|
|
el = egen.createSelection(item, val, clss);
|
|
el.addEventListener('change', function(e) {
|
|
try{
|
|
editor.menuOptions[e.target.id].forEach(function(x) {
|
|
if(x.textContent !== e.target.textContent) {
|
|
delete x.selected;
|
|
}
|
|
});
|
|
obj[e.target.id](e.target.value);
|
|
} catch (err) {
|
|
throw new Error(err);
|
|
}
|
|
});
|
|
} else if(typeof val === 'boolean') {
|
|
el = egen.createCheckbox(item, val, clss);
|
|
el.addEventListener('change', function(e) {
|
|
try{
|
|
obj[e.target.id](!!e.target.checked);
|
|
} catch (err) {
|
|
throw new Error(err);
|
|
}
|
|
});
|
|
} else {
|
|
el = egen.createInput(item, val, clss);
|
|
el.addEventListener('change', function(e) {
|
|
try{
|
|
if(e.target.value === 'true') {
|
|
obj[e.target.id](true);
|
|
} else if(e.target.value === 'false') {
|
|
obj[e.target.id](false);
|
|
} else {
|
|
obj[e.target.id](e.target.value);
|
|
}
|
|
} catch (err) {
|
|
throw new Error(err);
|
|
}
|
|
});
|
|
}
|
|
el.style.cssText = 'float:right;';
|
|
div.appendChild(el);
|
|
return div;
|
|
}
|
|
function makeDropdown(item, esr, clss, fn) {
|
|
var val = editor.menuOptions[item];
|
|
var currentVal = esr[fn]();
|
|
if (typeof currentVal == 'object')
|
|
currentVal = currentVal.$id;
|
|
val.forEach(function(valuex) {
|
|
if (valuex.value === currentVal)
|
|
valuex.selected = 'selected';
|
|
});
|
|
return createNewEntry(esr, clss, item, val);
|
|
}
|
|
function handleSet(setObj) {
|
|
var item = setObj.functionName;
|
|
var esr = setObj.parentObj;
|
|
var clss = setObj.parentName;
|
|
var val;
|
|
var fn = item.replace(/^set/, 'get');
|
|
if(editor.menuOptions[item] !== undefined) {
|
|
elements.push(makeDropdown(item, esr, clss, fn));
|
|
} else if(typeof esr[fn] === 'function') {
|
|
try {
|
|
val = esr[fn]();
|
|
if(typeof val === 'object') {
|
|
val = val.$id;
|
|
}
|
|
elements.push(
|
|
createNewEntry(esr, clss, item, val)
|
|
);
|
|
} catch (e) {
|
|
}
|
|
}
|
|
}
|
|
addEditorMenuOptions(editor);
|
|
getSetFunctions(editor).forEach(function(setObj) {
|
|
handleSet(setObj);
|
|
});
|
|
cleanupElementsList();
|
|
return wrapElements();
|
|
};
|
|
|
|
});
|
|
|
|
define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"], function(require, exports, module) {
|
|
'use strict';
|
|
var dom = require("../../lib/dom");
|
|
var cssText = "#ace_settingsmenu, #kbshortcutmenu {\
|
|
background-color: #F7F7F7;\
|
|
color: black;\
|
|
box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\
|
|
padding: 1em 0.5em 2em 1em;\
|
|
overflow: auto;\
|
|
position: absolute;\
|
|
margin: 0;\
|
|
bottom: 0;\
|
|
right: 0;\
|
|
top: 0;\
|
|
z-index: 9991;\
|
|
cursor: default;\
|
|
}\
|
|
.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\
|
|
box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\
|
|
background-color: rgba(255, 255, 255, 0.6);\
|
|
color: black;\
|
|
}\
|
|
.ace_optionsMenuEntry:hover {\
|
|
background-color: rgba(100, 100, 100, 0.1);\
|
|
-webkit-transition: all 0.5s;\
|
|
transition: all 0.3s\
|
|
}\
|
|
.ace_closeButton {\
|
|
background: rgba(245, 146, 146, 0.5);\
|
|
border: 1px solid #F48A8A;\
|
|
border-radius: 50%;\
|
|
padding: 7px;\
|
|
position: absolute;\
|
|
right: -8px;\
|
|
top: -8px;\
|
|
z-index: 1000;\
|
|
}\
|
|
.ace_closeButton{\
|
|
background: rgba(245, 146, 146, 0.9);\
|
|
}\
|
|
.ace_optionsMenuKey {\
|
|
color: darkslateblue;\
|
|
font-weight: bold;\
|
|
}\
|
|
.ace_optionsMenuCommand {\
|
|
color: darkcyan;\
|
|
font-weight: normal;\
|
|
}";
|
|
dom.importCssString(cssText);
|
|
module.exports.overlayPage = function overlayPage(editor, contentElement, top, right, bottom, left) {
|
|
top = top ? 'top: ' + top + ';' : '';
|
|
bottom = bottom ? 'bottom: ' + bottom + ';' : '';
|
|
right = right ? 'right: ' + right + ';' : '';
|
|
left = left ? 'left: ' + left + ';' : '';
|
|
|
|
var closer = document.createElement('div');
|
|
var contentContainer = document.createElement('div');
|
|
|
|
function documentEscListener(e) {
|
|
if (e.keyCode === 27) {
|
|
closer.click();
|
|
}
|
|
}
|
|
|
|
closer.style.cssText = 'margin: 0; padding: 0; ' +
|
|
'position: fixed; top:0; bottom:0; left:0; right:0;' +
|
|
'z-index: 9990; ' +
|
|
'background-color: rgba(0, 0, 0, 0.3);';
|
|
closer.addEventListener('click', function() {
|
|
document.removeEventListener('keydown', documentEscListener);
|
|
closer.parentNode.removeChild(closer);
|
|
editor.focus();
|
|
closer = null;
|
|
});
|
|
document.addEventListener('keydown', documentEscListener);
|
|
|
|
contentContainer.style.cssText = top + right + bottom + left;
|
|
contentContainer.addEventListener('click', function(e) {
|
|
e.stopPropagation();
|
|
});
|
|
|
|
var wrapper = dom.createElement("div");
|
|
wrapper.style.position = "relative";
|
|
|
|
var closeButton = dom.createElement("div");
|
|
closeButton.className = "ace_closeButton";
|
|
closeButton.addEventListener('click', function() {
|
|
closer.click();
|
|
});
|
|
|
|
wrapper.appendChild(closeButton);
|
|
contentContainer.appendChild(wrapper);
|
|
|
|
contentContainer.appendChild(contentElement);
|
|
closer.appendChild(contentContainer);
|
|
document.body.appendChild(closer);
|
|
editor.blur();
|
|
};
|
|
|
|
});
|
|
|
|
define("ace/ext/settings_menu",["require","exports","module","ace/ext/menu_tools/generate_settings_menu","ace/ext/menu_tools/overlay_page","ace/editor"], function(require, exports, module) {
|
|
"use strict";
|
|
var generateSettingsMenu = require('./menu_tools/generate_settings_menu').generateSettingsMenu;
|
|
var overlayPage = require('./menu_tools/overlay_page').overlayPage;
|
|
function showSettingsMenu(editor) {
|
|
var sm = document.getElementById('ace_settingsmenu');
|
|
if (!sm)
|
|
overlayPage(editor, generateSettingsMenu(editor), '0', '0', '0');
|
|
}
|
|
module.exports.init = function(editor) {
|
|
var Editor = require("ace/editor").Editor;
|
|
Editor.prototype.showSettingsMenu = function() {
|
|
showSettingsMenu(this);
|
|
};
|
|
};
|
|
});
|
|
(function() {
|
|
window.require(["ace/ext/settings_menu"], function() {});
|
|
})();
|
|
|