diff --git a/lib/wysihtml/rails/version.rb b/lib/wysihtml/rails/version.rb
index 9a9af5a..64362f0 100644
--- a/lib/wysihtml/rails/version.rb
+++ b/lib/wysihtml/rails/version.rb
@@ -1,5 +1,5 @@
module Wysihtml
module Rails
- VERSION = "0.5.0.beta12"
+ VERSION = "0.5.0.beta13"
end
end
diff --git a/vendor/assets/javascripts/wysihtml-toolbar.js b/vendor/assets/javascripts/wysihtml-toolbar.js
index a456bea..ef0551b 100644
--- a/vendor/assets/javascripts/wysihtml-toolbar.js
+++ b/vendor/assets/javascripts/wysihtml-toolbar.js
@@ -1,5 +1,5 @@
/**
- * @license wysihtml v0.5.0-beta12
+ * @license wysihtml v0.5.0-beta13
* https://github.com/Voog/wysihtml
*
* Author: Christopher Blum (https://github.com/tiff)
@@ -10,7 +10,7 @@
*
*/
var wysihtml5 = {
- version: "0.5.0-beta12",
+ version: "0.5.0-beta13",
// namespaces
commands: {},
@@ -405,6 +405,8 @@ var wysihtml5 = {
return all;
};
+
+
var normalizeFix = function() {
var f = Node.prototype.normalize;
var nf = function() {
@@ -412,13 +414,15 @@ var wysihtml5 = {
s = this.ownerDocument.defaultView.getSelection(),
anode = s.anchorNode,
aoffset = s.anchorOffset,
+ aelement = anode && anode.nodeType === 1 && anode.childNodes.length > 0 ? anode.childNodes[aoffset] : undefined,
fnode = s.focusNode,
foffset = s.focusOffset,
+ felement = fnode && fnode.nodeType === 1 && foffset > 0 ? fnode.childNodes[foffset -1] : undefined,
r = this.ownerDocument.createRange(),
prevTxt = texts.shift(),
curText = prevTxt ? texts.shift() : null;
- if ((anode === fnode && foffset < aoffset) || (anode !== fnode && (anode.compareDocumentPosition(fnode) & Node.DOCUMENT_POSITION_PRECEDING))) {
+ if ((anode === fnode && foffset < aoffset) || (anode !== fnode && (anode.compareDocumentPosition(fnode) & Node.DOCUMENT_POSITION_PRECEDING) && !(anode.compareDocumentPosition(fnode) & Node.DOCUMENT_POSITION_CONTAINS))) {
fnode = [anode, anode = fnode][0];
foffset = [aoffset, aoffset = foffset][0];
}
@@ -442,13 +446,20 @@ var wysihtml5 = {
}
}
+ if (felement) {
+ foffset = Array.prototype.indexOf.call(felement.parentNode.childNodes, felement) + 1;
+ }
+
+ if (aelement) {
+ aoffset = Array.prototype.indexOf.call(aelement.parentNode.childNodes, aelement);
+ }
+
if (anode && anode.parentNode && fnode && fnode.parentNode) {
r.setStart(anode, aoffset);
r.setEnd(fnode, foffset);
s.removeAllRanges();
s.addRange(r);
}
-
};
Node.prototype.normalize = nf;
};
diff --git a/vendor/assets/javascripts/wysihtml.js b/vendor/assets/javascripts/wysihtml.js
index d386cb2..33f147c 100644
--- a/vendor/assets/javascripts/wysihtml.js
+++ b/vendor/assets/javascripts/wysihtml.js
@@ -1,5 +1,5 @@
/**
- * @license wysihtml v0.5.0-beta12
+ * @license wysihtml v0.5.0-beta13
* https://github.com/Voog/wysihtml
*
* Author: Christopher Blum (https://github.com/tiff)
@@ -10,7 +10,7 @@
*
*/
var wysihtml5 = {
- version: "0.5.0-beta12",
+ version: "0.5.0-beta13",
// namespaces
commands: {},
@@ -405,6 +405,8 @@ var wysihtml5 = {
return all;
};
+
+
var normalizeFix = function() {
var f = Node.prototype.normalize;
var nf = function() {
@@ -412,13 +414,15 @@ var wysihtml5 = {
s = this.ownerDocument.defaultView.getSelection(),
anode = s.anchorNode,
aoffset = s.anchorOffset,
+ aelement = anode && anode.nodeType === 1 && anode.childNodes.length > 0 ? anode.childNodes[aoffset] : undefined,
fnode = s.focusNode,
foffset = s.focusOffset,
+ felement = fnode && fnode.nodeType === 1 && foffset > 0 ? fnode.childNodes[foffset -1] : undefined,
r = this.ownerDocument.createRange(),
prevTxt = texts.shift(),
curText = prevTxt ? texts.shift() : null;
- if ((anode === fnode && foffset < aoffset) || (anode !== fnode && (anode.compareDocumentPosition(fnode) & Node.DOCUMENT_POSITION_PRECEDING))) {
+ if ((anode === fnode && foffset < aoffset) || (anode !== fnode && (anode.compareDocumentPosition(fnode) & Node.DOCUMENT_POSITION_PRECEDING) && !(anode.compareDocumentPosition(fnode) & Node.DOCUMENT_POSITION_CONTAINS))) {
fnode = [anode, anode = fnode][0];
foffset = [aoffset, aoffset = foffset][0];
}
@@ -442,13 +446,20 @@ var wysihtml5 = {
}
}
+ if (felement) {
+ foffset = Array.prototype.indexOf.call(felement.parentNode.childNodes, felement) + 1;
+ }
+
+ if (aelement) {
+ aoffset = Array.prototype.indexOf.call(aelement.parentNode.childNodes, aelement);
+ }
+
if (anode && anode.parentNode && fnode && fnode.parentNode) {
r.setStart(anode, aoffset);
r.setEnd(fnode, foffset);
s.removeAllRanges();
s.addRange(r);
}
-
};
Node.prototype.normalize = nf;
};