wysihtml-rails 0.5.0.beta7 → 0.5.0.beta8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/wysihtml/rails/version.rb +1 -1
- data/vendor/assets/javascripts/wysihtml-toolbar.js +27 -21
- data/vendor/assets/javascripts/wysihtml.js +27 -21
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad7139f85a6baa918d3ccb084f49bd310c7e3422
|
4
|
+
data.tar.gz: c11cfb988f9d9428426283ca244c7d47253401ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4de3c6dde3a86c14dc00968bd912c76f977630649f1db2ce3987a0a05386eac89f4039e178286a5ddd6eedfe851f67e8b84dfc3138eade2a6740a45c85c08331
|
7
|
+
data.tar.gz: 1a1ed7532158cd3a900554727d6b75bacc1647dc26470b13853b34faf8a957649daa9c182350bbd92e1d8e7d8cce85ed60d98dbdf9f5f0f32ead6b5c190b26c8
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license wysihtml v0.5.0-
|
2
|
+
* @license wysihtml v0.5.0-beta8
|
3
3
|
* https://github.com/Voog/wysihtml
|
4
4
|
*
|
5
5
|
* Author: Christopher Blum (https://github.com/tiff)
|
@@ -10,7 +10,7 @@
|
|
10
10
|
*
|
11
11
|
*/
|
12
12
|
var wysihtml5 = {
|
13
|
-
version: "0.5.0-
|
13
|
+
version: "0.5.0-beta8",
|
14
14
|
|
15
15
|
// namespaces
|
16
16
|
commands: {},
|
@@ -4684,8 +4684,8 @@ wysihtml5.browser = (function() {
|
|
4684
4684
|
// When inserting unordered or ordered lists in Firefox, Chrome or Safari, the current selection or line gets
|
4685
4685
|
// converted into a list (<ul><li>...</li></ul>, <ol><li>...</li></ol>)
|
4686
4686
|
// IE and Opera act a bit different here as they convert the entire content of the current block element into a list
|
4687
|
-
"insertUnorderedList": isIE(),
|
4688
|
-
"insertOrderedList": isIE()
|
4687
|
+
"insertUnorderedList": isIE(9, ">="),
|
4688
|
+
"insertOrderedList": isIE(9, ">=")
|
4689
4689
|
};
|
4690
4690
|
|
4691
4691
|
// Firefox throws errors for queryCommandSupported, so we have to build up our own object of supported commands
|
@@ -5146,7 +5146,7 @@ wysihtml5.browser = (function() {
|
|
5146
5146
|
},
|
5147
5147
|
|
5148
5148
|
isPlainObject: function () {
|
5149
|
-
return obj && Object.prototype.toString.call(obj) === '[object Object]';
|
5149
|
+
return obj && Object.prototype.toString.call(obj) === '[object Object]' && !(("Node" in window) ? obj instanceof Node : obj instanceof Element || obj instanceof Text);
|
5150
5150
|
}
|
5151
5151
|
};
|
5152
5152
|
};
|
@@ -7227,12 +7227,15 @@ wysihtml5.dom.replaceWithChildNodes = function(node) {
|
|
7227
7227
|
var doc = list.ownerDocument,
|
7228
7228
|
fragment = doc.createDocumentFragment(),
|
7229
7229
|
previousSibling = wysihtml5.dom.domNode(list).prev({ignoreBlankTexts: true}),
|
7230
|
+
nextSibling = wysihtml5.dom.domNode(list).next({ignoreBlankTexts: true}),
|
7230
7231
|
firstChild,
|
7231
7232
|
lastChild,
|
7232
7233
|
isLastChild,
|
7233
7234
|
shouldAppendLineBreak,
|
7234
7235
|
paragraph,
|
7235
|
-
listItem
|
7236
|
+
listItem,
|
7237
|
+
lastListItem = list.lastElementChild || list.lastChild,
|
7238
|
+
isLastItem;
|
7236
7239
|
|
7237
7240
|
if (useLineBreaks) {
|
7238
7241
|
// Insert line break if list is after a non-block element
|
@@ -7242,10 +7245,11 @@ wysihtml5.dom.replaceWithChildNodes = function(node) {
|
|
7242
7245
|
|
7243
7246
|
while (listItem = (list.firstElementChild || list.firstChild)) {
|
7244
7247
|
lastChild = listItem.lastChild;
|
7248
|
+
isLastItem = listItem === lastListItem;
|
7245
7249
|
while (firstChild = listItem.firstChild) {
|
7246
7250
|
isLastChild = firstChild === lastChild;
|
7247
7251
|
// This needs to be done before appending it to the fragment, as it otherwise will lose style information
|
7248
|
-
shouldAppendLineBreak = isLastChild && !_isBlockElement(firstChild) && !_isLineBreak(firstChild);
|
7252
|
+
shouldAppendLineBreak = (!isLastItem || (nextSibling && !_isBlockElement(nextSibling))) && isLastChild && !_isBlockElement(firstChild) && !_isLineBreak(firstChild);
|
7249
7253
|
fragment.appendChild(firstChild);
|
7250
7254
|
if (shouldAppendLineBreak) {
|
7251
7255
|
_appendLineBreak(fragment);
|
@@ -8990,7 +8994,7 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
8990
8994
|
}
|
8991
8995
|
|
8992
8996
|
var handleMouseDown = function(event) {
|
8993
|
-
var target = wysihtml5.dom.getParentElement(event.target, { query: "td, th" });
|
8997
|
+
var target = wysihtml5.dom.getParentElement(event.target, { query: "td, th" }, false, editable);
|
8994
8998
|
if (target) {
|
8995
8999
|
handleSelectionMousedown(target);
|
8996
9000
|
}
|
@@ -9000,7 +9004,7 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
9000
9004
|
select.start = target;
|
9001
9005
|
select.end = target;
|
9002
9006
|
select.cells = [target];
|
9003
|
-
select.table = dom.getParentElement(select.start, { query: "table" });
|
9007
|
+
select.table = dom.getParentElement(select.start, { query: "table" }, false, editable);
|
9004
9008
|
|
9005
9009
|
if (select.table) {
|
9006
9010
|
removeCellSelections();
|
@@ -9031,11 +9035,11 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
9031
9035
|
|
9032
9036
|
function handleMouseMove (event) {
|
9033
9037
|
var curTable = null,
|
9034
|
-
cell = dom.getParentElement(event.target, { query: "td, th" }),
|
9038
|
+
cell = dom.getParentElement(event.target, { query: "td, th" }, false, editable),
|
9035
9039
|
oldEnd;
|
9036
9040
|
|
9037
9041
|
if (cell && select.table && select.start) {
|
9038
|
-
curTable = dom.getParentElement(cell, { query: "table" });
|
9042
|
+
curTable = dom.getParentElement(cell, { query: "table" }, false, editable);
|
9039
9043
|
if (curTable && curTable === select.table) {
|
9040
9044
|
removeCellSelections();
|
9041
9045
|
oldEnd = select.end;
|
@@ -9063,7 +9067,7 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
9063
9067
|
|
9064
9068
|
var sideClickHandler = function(event) {
|
9065
9069
|
editable.ownerDocument.removeEventListener("click", sideClickHandler);
|
9066
|
-
if (dom.getParentElement(event.target, { query: "table" }) != select.table) {
|
9070
|
+
if (dom.getParentElement(event.target, { query: "table" }, false, editable) != select.table) {
|
9067
9071
|
removeCellSelections();
|
9068
9072
|
select.table = null;
|
9069
9073
|
select.start = null;
|
@@ -9079,7 +9083,7 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
9079
9083
|
function selectCells (start, end) {
|
9080
9084
|
select.start = start;
|
9081
9085
|
select.end = end;
|
9082
|
-
select.table = dom.getParentElement(select.start, { query: "table" });
|
9086
|
+
select.table = dom.getParentElement(select.start, { query: "table" }, false, editable);
|
9083
9087
|
selectedCells = dom.table.getCellsBetween(select.start, select.end);
|
9084
9088
|
addSelections(selectedCells);
|
9085
9089
|
bindSideclick();
|
@@ -12132,7 +12136,7 @@ wysihtml5.Commands = Base.extend(
|
|
12132
12136
|
};
|
12133
12137
|
|
12134
12138
|
if (node) {
|
12135
|
-
var parentLi = wysihtml5.dom.getParentElement(node, { query: "li" }),
|
12139
|
+
var parentLi = wysihtml5.dom.getParentElement(node, { query: "li" }, false, composer.element),
|
12136
12140
|
otherNodeName = (nodeName === "UL") ? "OL" : "UL";
|
12137
12141
|
|
12138
12142
|
if (isNode(node, nodeName)) {
|
@@ -12169,8 +12173,9 @@ wysihtml5.Commands = Base.extend(
|
|
12169
12173
|
// <ul><li>foo</li><li>bar</li></ul>
|
12170
12174
|
// becomes:
|
12171
12175
|
// foo<br>bar<br>
|
12172
|
-
|
12173
|
-
|
12176
|
+
|
12177
|
+
composer.selection.executeAndRestoreRangy(function() {
|
12178
|
+
otherLists = getListsInSelection(otherNodeName, composer);
|
12174
12179
|
if (otherLists.length) {
|
12175
12180
|
for (var l = otherLists.length; l--;) {
|
12176
12181
|
wysihtml5.dom.renameElement(otherLists[l], nodeName.toLowerCase());
|
@@ -12192,7 +12197,7 @@ wysihtml5.Commands = Base.extend(
|
|
12192
12197
|
// becomes:
|
12193
12198
|
// <ul><li>foo</li><li>bar</li></ul>
|
12194
12199
|
// Also rename other lists in selection
|
12195
|
-
composer.selection.
|
12200
|
+
composer.selection.executeAndRestoreRangy(function() {
|
12196
12201
|
var renameLists = [el].concat(getListsInSelection(otherNodeName, composer));
|
12197
12202
|
|
12198
12203
|
// All selection inner lists get renamed too
|
@@ -12246,6 +12251,7 @@ wysihtml5.Commands = Base.extend(
|
|
12246
12251
|
selectedNode = composer.selection.getSelectedNode(),
|
12247
12252
|
list = findListEl(selectedNode, nodeName, composer);
|
12248
12253
|
|
12254
|
+
|
12249
12255
|
if (!list.el) {
|
12250
12256
|
if (composer.commands.support(cmd)) {
|
12251
12257
|
doc.execCommand(cmd, false, null);
|
@@ -14395,12 +14401,12 @@ wysihtml5.views.View = Base.extend(
|
|
14395
14401
|
/** @scope wysihtml5.Editor.prototype */ {
|
14396
14402
|
constructor: function(editableElement, config) {
|
14397
14403
|
this.editableElement = typeof(editableElement) === "string" ? document.getElementById(editableElement) : editableElement;
|
14398
|
-
this.config = wysihtml5.lang.object({}).merge(defaultConfig).merge(config
|
14404
|
+
this.config = wysihtml5.lang.object({}).merge(defaultConfig).merge(config).get();
|
14399
14405
|
this._isCompatible = wysihtml5.browser.supported();
|
14400
14406
|
|
14401
|
-
//
|
14402
|
-
if (config && config.
|
14403
|
-
|
14407
|
+
// merge classNames
|
14408
|
+
if (config && config.classNames) {
|
14409
|
+
wysihtml5.lang.object(this.config.classNames).merge(config.classNames);
|
14404
14410
|
}
|
14405
14411
|
|
14406
14412
|
if (this.editableElement.nodeName.toLowerCase() != "textarea") {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license wysihtml v0.5.0-
|
2
|
+
* @license wysihtml v0.5.0-beta8
|
3
3
|
* https://github.com/Voog/wysihtml
|
4
4
|
*
|
5
5
|
* Author: Christopher Blum (https://github.com/tiff)
|
@@ -10,7 +10,7 @@
|
|
10
10
|
*
|
11
11
|
*/
|
12
12
|
var wysihtml5 = {
|
13
|
-
version: "0.5.0-
|
13
|
+
version: "0.5.0-beta8",
|
14
14
|
|
15
15
|
// namespaces
|
16
16
|
commands: {},
|
@@ -4684,8 +4684,8 @@ wysihtml5.browser = (function() {
|
|
4684
4684
|
// When inserting unordered or ordered lists in Firefox, Chrome or Safari, the current selection or line gets
|
4685
4685
|
// converted into a list (<ul><li>...</li></ul>, <ol><li>...</li></ol>)
|
4686
4686
|
// IE and Opera act a bit different here as they convert the entire content of the current block element into a list
|
4687
|
-
"insertUnorderedList": isIE(),
|
4688
|
-
"insertOrderedList": isIE()
|
4687
|
+
"insertUnorderedList": isIE(9, ">="),
|
4688
|
+
"insertOrderedList": isIE(9, ">=")
|
4689
4689
|
};
|
4690
4690
|
|
4691
4691
|
// Firefox throws errors for queryCommandSupported, so we have to build up our own object of supported commands
|
@@ -5146,7 +5146,7 @@ wysihtml5.browser = (function() {
|
|
5146
5146
|
},
|
5147
5147
|
|
5148
5148
|
isPlainObject: function () {
|
5149
|
-
return obj && Object.prototype.toString.call(obj) === '[object Object]';
|
5149
|
+
return obj && Object.prototype.toString.call(obj) === '[object Object]' && !(("Node" in window) ? obj instanceof Node : obj instanceof Element || obj instanceof Text);
|
5150
5150
|
}
|
5151
5151
|
};
|
5152
5152
|
};
|
@@ -7227,12 +7227,15 @@ wysihtml5.dom.replaceWithChildNodes = function(node) {
|
|
7227
7227
|
var doc = list.ownerDocument,
|
7228
7228
|
fragment = doc.createDocumentFragment(),
|
7229
7229
|
previousSibling = wysihtml5.dom.domNode(list).prev({ignoreBlankTexts: true}),
|
7230
|
+
nextSibling = wysihtml5.dom.domNode(list).next({ignoreBlankTexts: true}),
|
7230
7231
|
firstChild,
|
7231
7232
|
lastChild,
|
7232
7233
|
isLastChild,
|
7233
7234
|
shouldAppendLineBreak,
|
7234
7235
|
paragraph,
|
7235
|
-
listItem
|
7236
|
+
listItem,
|
7237
|
+
lastListItem = list.lastElementChild || list.lastChild,
|
7238
|
+
isLastItem;
|
7236
7239
|
|
7237
7240
|
if (useLineBreaks) {
|
7238
7241
|
// Insert line break if list is after a non-block element
|
@@ -7242,10 +7245,11 @@ wysihtml5.dom.replaceWithChildNodes = function(node) {
|
|
7242
7245
|
|
7243
7246
|
while (listItem = (list.firstElementChild || list.firstChild)) {
|
7244
7247
|
lastChild = listItem.lastChild;
|
7248
|
+
isLastItem = listItem === lastListItem;
|
7245
7249
|
while (firstChild = listItem.firstChild) {
|
7246
7250
|
isLastChild = firstChild === lastChild;
|
7247
7251
|
// This needs to be done before appending it to the fragment, as it otherwise will lose style information
|
7248
|
-
shouldAppendLineBreak = isLastChild && !_isBlockElement(firstChild) && !_isLineBreak(firstChild);
|
7252
|
+
shouldAppendLineBreak = (!isLastItem || (nextSibling && !_isBlockElement(nextSibling))) && isLastChild && !_isBlockElement(firstChild) && !_isLineBreak(firstChild);
|
7249
7253
|
fragment.appendChild(firstChild);
|
7250
7254
|
if (shouldAppendLineBreak) {
|
7251
7255
|
_appendLineBreak(fragment);
|
@@ -8990,7 +8994,7 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
8990
8994
|
}
|
8991
8995
|
|
8992
8996
|
var handleMouseDown = function(event) {
|
8993
|
-
var target = wysihtml5.dom.getParentElement(event.target, { query: "td, th" });
|
8997
|
+
var target = wysihtml5.dom.getParentElement(event.target, { query: "td, th" }, false, editable);
|
8994
8998
|
if (target) {
|
8995
8999
|
handleSelectionMousedown(target);
|
8996
9000
|
}
|
@@ -9000,7 +9004,7 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
9000
9004
|
select.start = target;
|
9001
9005
|
select.end = target;
|
9002
9006
|
select.cells = [target];
|
9003
|
-
select.table = dom.getParentElement(select.start, { query: "table" });
|
9007
|
+
select.table = dom.getParentElement(select.start, { query: "table" }, false, editable);
|
9004
9008
|
|
9005
9009
|
if (select.table) {
|
9006
9010
|
removeCellSelections();
|
@@ -9031,11 +9035,11 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
9031
9035
|
|
9032
9036
|
function handleMouseMove (event) {
|
9033
9037
|
var curTable = null,
|
9034
|
-
cell = dom.getParentElement(event.target, { query: "td, th" }),
|
9038
|
+
cell = dom.getParentElement(event.target, { query: "td, th" }, false, editable),
|
9035
9039
|
oldEnd;
|
9036
9040
|
|
9037
9041
|
if (cell && select.table && select.start) {
|
9038
|
-
curTable = dom.getParentElement(cell, { query: "table" });
|
9042
|
+
curTable = dom.getParentElement(cell, { query: "table" }, false, editable);
|
9039
9043
|
if (curTable && curTable === select.table) {
|
9040
9044
|
removeCellSelections();
|
9041
9045
|
oldEnd = select.end;
|
@@ -9063,7 +9067,7 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
9063
9067
|
|
9064
9068
|
var sideClickHandler = function(event) {
|
9065
9069
|
editable.ownerDocument.removeEventListener("click", sideClickHandler);
|
9066
|
-
if (dom.getParentElement(event.target, { query: "table" }) != select.table) {
|
9070
|
+
if (dom.getParentElement(event.target, { query: "table" }, false, editable) != select.table) {
|
9067
9071
|
removeCellSelections();
|
9068
9072
|
select.table = null;
|
9069
9073
|
select.start = null;
|
@@ -9079,7 +9083,7 @@ wysihtml5.quirks.ensureProperClearing = (function() {
|
|
9079
9083
|
function selectCells (start, end) {
|
9080
9084
|
select.start = start;
|
9081
9085
|
select.end = end;
|
9082
|
-
select.table = dom.getParentElement(select.start, { query: "table" });
|
9086
|
+
select.table = dom.getParentElement(select.start, { query: "table" }, false, editable);
|
9083
9087
|
selectedCells = dom.table.getCellsBetween(select.start, select.end);
|
9084
9088
|
addSelections(selectedCells);
|
9085
9089
|
bindSideclick();
|
@@ -12132,7 +12136,7 @@ wysihtml5.Commands = Base.extend(
|
|
12132
12136
|
};
|
12133
12137
|
|
12134
12138
|
if (node) {
|
12135
|
-
var parentLi = wysihtml5.dom.getParentElement(node, { query: "li" }),
|
12139
|
+
var parentLi = wysihtml5.dom.getParentElement(node, { query: "li" }, false, composer.element),
|
12136
12140
|
otherNodeName = (nodeName === "UL") ? "OL" : "UL";
|
12137
12141
|
|
12138
12142
|
if (isNode(node, nodeName)) {
|
@@ -12169,8 +12173,9 @@ wysihtml5.Commands = Base.extend(
|
|
12169
12173
|
// <ul><li>foo</li><li>bar</li></ul>
|
12170
12174
|
// becomes:
|
12171
12175
|
// foo<br>bar<br>
|
12172
|
-
|
12173
|
-
|
12176
|
+
|
12177
|
+
composer.selection.executeAndRestoreRangy(function() {
|
12178
|
+
otherLists = getListsInSelection(otherNodeName, composer);
|
12174
12179
|
if (otherLists.length) {
|
12175
12180
|
for (var l = otherLists.length; l--;) {
|
12176
12181
|
wysihtml5.dom.renameElement(otherLists[l], nodeName.toLowerCase());
|
@@ -12192,7 +12197,7 @@ wysihtml5.Commands = Base.extend(
|
|
12192
12197
|
// becomes:
|
12193
12198
|
// <ul><li>foo</li><li>bar</li></ul>
|
12194
12199
|
// Also rename other lists in selection
|
12195
|
-
composer.selection.
|
12200
|
+
composer.selection.executeAndRestoreRangy(function() {
|
12196
12201
|
var renameLists = [el].concat(getListsInSelection(otherNodeName, composer));
|
12197
12202
|
|
12198
12203
|
// All selection inner lists get renamed too
|
@@ -12246,6 +12251,7 @@ wysihtml5.Commands = Base.extend(
|
|
12246
12251
|
selectedNode = composer.selection.getSelectedNode(),
|
12247
12252
|
list = findListEl(selectedNode, nodeName, composer);
|
12248
12253
|
|
12254
|
+
|
12249
12255
|
if (!list.el) {
|
12250
12256
|
if (composer.commands.support(cmd)) {
|
12251
12257
|
doc.execCommand(cmd, false, null);
|
@@ -14395,12 +14401,12 @@ wysihtml5.views.View = Base.extend(
|
|
14395
14401
|
/** @scope wysihtml5.Editor.prototype */ {
|
14396
14402
|
constructor: function(editableElement, config) {
|
14397
14403
|
this.editableElement = typeof(editableElement) === "string" ? document.getElementById(editableElement) : editableElement;
|
14398
|
-
this.config = wysihtml5.lang.object({}).merge(defaultConfig).merge(config
|
14404
|
+
this.config = wysihtml5.lang.object({}).merge(defaultConfig).merge(config).get();
|
14399
14405
|
this._isCompatible = wysihtml5.browser.supported();
|
14400
14406
|
|
14401
|
-
//
|
14402
|
-
if (config && config.
|
14403
|
-
|
14407
|
+
// merge classNames
|
14408
|
+
if (config && config.classNames) {
|
14409
|
+
wysihtml5.lang.object(this.config.classNames).merge(config.classNames);
|
14404
14410
|
}
|
14405
14411
|
|
14406
14412
|
if (this.editableElement.nodeName.toLowerCase() != "textarea") {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wysihtml-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.0.
|
4
|
+
version: 0.5.0.beta8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanel Jakobsoo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|