diff --git a/lib/ace/lib/dom.js b/lib/ace/lib/dom.js
index 34549916..74a71123 100644
--- a/lib/ace/lib/dom.js
+++ b/lib/ace/lib/dom.js
@@ -39,72 +39,86 @@ exports.createElement = function(tag, ns) {
document.createElement(tag);
};
-exports.setText = function(elem, text) {
- if (elem.innerText !== undefined) {
- elem.innerText = text;
- }
- if (elem.textContent !== undefined) {
- elem.textContent = text;
- }
-};
+if (typeof DOMTokenList === 'function') {
+ exports.hasCssClass = function(el, name) {
+ return el.classList.contains(name);
+ };
-exports.hasCssClass = function(el, name) {
- var classes = el.className.split(/\s+/g);
- return classes.indexOf(name) !== -1;
-};
+ exports.addCssClass = function(el, name) {
+ el.classList.add(name);
+ };
-/*
-* Add a CSS class to the list of classes on the given node
-*/
-exports.addCssClass = function(el, name) {
- if (!exports.hasCssClass(el, name)) {
- el.className += " " + name;
+ exports.removeCssClass = function(el, name) {
+ el.classList.remove(name);
}
-};
-/*
-* Remove a CSS class from the list of classes on the given node
-*/
-exports.removeCssClass = function(el, name) {
- var classes = el.className.split(/\s+/g);
- while (true) {
- var index = classes.indexOf(name);
- if (index == -1) {
- break;
+ exports.toggleCssClass = function(el, name) {
+ el.classList.toggle(name);
+ }
+
+ exports.setCssClass = function(el, name, include) {
+ el.classList[include ? 'add' : 'remove'](name);
+ }
+}
+else {
+ exports.hasCssClass = function(el, name) {
+ var classes = el.className.split(/\s+/g);
+ return classes.indexOf(name) !== -1;
+ };
+
+ /*
+ * Add a CSS class to the list of classes on the given node
+ */
+ exports.addCssClass = function(el, name) {
+ if (!exports.hasCssClass(el, name)) {
+ el.className += " " + name;
}
- classes.splice(index, 1);
- }
- el.className = classes.join(" ");
-};
+ };
-exports.toggleCssClass = function(el, name) {
- var classes = el.className.split(/\s+/g), add = true;
- while (true) {
- var index = classes.indexOf(name);
- if (index == -1) {
- break;
+ /*
+ * Remove a CSS class from the list of classes on the given node
+ */
+ exports.removeCssClass = function(el, name) {
+ var classes = el.className.split(/\s+/g);
+ while (true) {
+ var index = classes.indexOf(name);
+ if (index == -1) {
+ break;
+ }
+ classes.splice(index, 1);
}
- add = false;
- classes.splice(index, 1);
- }
- if(add)
- classes.push(name);
+ el.className = classes.join(" ");
+ };
- el.className = classes.join(" ");
- return add;
-};
+ exports.toggleCssClass = function(el, name) {
+ var classes = el.className.split(/\s+/g), add = true;
+ while (true) {
+ var index = classes.indexOf(name);
+ if (index == -1) {
+ break;
+ }
+ add = false;
+ classes.splice(index, 1);
+ }
+ if(add)
+ classes.push(name);
-/*
- * Add or remove a CSS class from the list of classes on the given node
- * depending on the value of include
- */
-exports.setCssClass = function(node, className, include) {
- if (include) {
- exports.addCssClass(node, className);
- } else {
- exports.removeCssClass(node, className);
- }
-};
+ el.className = classes.join(" ");
+ return add;
+ };
+
+ /*
+ * Add or remove a CSS class from the list of classes on the given node
+ * depending on the value of include
+ */
+ exports.setCssClass = function(node, className, include) {
+ if (include) {
+ exports.addCssClass(node, className);
+ } else {
+ exports.removeCssClass(node, className);
+ }
+ };
+}
exports.hasCssString = function(id, doc) {
var index = 0, sheets;
@@ -143,7 +157,7 @@ exports.importCssString = function importCssString(cssText, id, doc) {
if (id)
style.id = id;
- var head = doc.getElementsByTagName("head")[0] || doc.documentElement;
+ var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;
head.appendChild(style);
}
};
@@ -156,7 +170,7 @@ exports.importCssStylsheet = function(uri, doc) {
link.rel = 'stylesheet';
link.href = uri;
- var head = doc.getElementsByTagName("head")[0] || doc.documentElement;
+ var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;
head.appendChild(link);
}
};
@@ -273,7 +287,7 @@ exports.getInnerText = function(el) {
if (document.body && "textContent" in document.body)
return el.textContent;
else
- return el.innerText || el.textContent || "";
+ return el.innerText;
};
exports.getParentWindow = function(document) {