lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ace.js in gollum-3.1.2 vs lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ace.js in gollum-3.1.3
- old
+ new
@@ -44,17 +44,20 @@
var Editor = require("./editor").Editor;
var EditSession = require("./edit_session").EditSession;
var UndoManager = require("./undomanager").UndoManager;
var Renderer = require("./virtual_renderer").VirtualRenderer;
-var MultiSelect = require("./multi_select").MultiSelect;
// The following require()s are for inclusion in the built ace file
require("./worker/worker_client");
require("./keyboard/hash_handler");
require("./placeholder");
+require("./multi_select");
require("./mode/folding/fold_mode");
+require("./theme/textmate");
+require("./ext/error_marker");
+
exports.config = require("./config");
/**
* Provides access to require in packed noconflict mode
* @param {String} moduleName
@@ -69,37 +72,56 @@
*
**/
exports.edit = function(el) {
if (typeof(el) == "string") {
var _id = el;
- var el = document.getElementById(_id);
+ el = document.getElementById(_id);
if (!el)
- throw "ace.edit can't find div #" + _id;
+ throw new Error("ace.edit can't find div #" + _id);
}
- if (el.env && el.env.editor instanceof Editor)
+ if (el && el.env && el.env.editor instanceof Editor)
return el.env.editor;
- var doc = exports.createEditSession(dom.getInnerText(el));
- el.innerHTML = '';
+ var value = "";
+ if (el && /input|textarea/i.test(el.tagName)) {
+ var oldNode = el;
+ value = oldNode.value;
+ el = dom.createElement("pre");
+ oldNode.parentNode.replaceChild(el, oldNode);
+ } else {
+ value = dom.getInnerText(el);
+ el.innerHTML = '';
+ }
+ var doc = exports.createEditSession(value);
+
var editor = new Editor(new Renderer(el));
- new MultiSelect(editor);
editor.setSession(doc);
var env = {
document: doc,
editor: editor,
- onResize: editor.resize.bind(editor)
+ onResize: editor.resize.bind(editor, null)
};
+ if (oldNode) env.textarea = oldNode;
event.addListener(window, "resize", env.onResize);
- el.env = editor.env = env;
+ editor.on("destroy", function() {
+ event.removeListener(window, "resize", env.onResize);
+ env.editor.container.env = null; // prevent memory leak on old ie
+ });
+ editor.container.env = editor.env = env;
return editor;
};
-
+/**
+ * Creates a new [[EditSession]], and returns the associated [[Document]].
+ * @param {Document | String} text {:textParam}
+ * @param {TextMode} mode {:modeParam}
+ *
+ **/
exports.createEditSession = function(text, mode) {
- var doc = new EditSession(text, doc);
+ var doc = new EditSession(text, mode);
doc.setUndoManager(new UndoManager());
return doc;
}
exports.EditSession = EditSession;
exports.UndoManager = UndoManager;