parent.contents().some(function(n) {
return move(n, newNode);
});
+ // span can't be the last node
+ newNode.append({'text': ''});
+ if(newNodes.second.contents()[0].getText().length === 0) {
+ var textNode = newNodes.second.contents()[0];
+ newNodes.second.detach();
+ newNodes.second = parent;
+ emptyText = newNodes.second.append(textNode);
+ }
+ }
+
+ var newNodeText = newNodes.second.contents()[0].getText();
+ if(newNodes.second.is({tagName: 'header'}) && newNodeText === '') {
+ newNodes.second = newNodes.second.setTag('div');
+ newNodes.second.setClass('p');
}
return _.extend(newNodes, {emptyText: emptyText});
return toMerge.is({tagName: 'div', 'klass': 'p'}) || (toMerge.is({tagName: 'div'}) && toMerge.getClass() === '');
},
run: function() {
- if(prev && (prev.is('p') || prev.is({tagName: 'header'}))) {
+ if (!prev)
+ return;
+ if(prev.is('p') || prev.is({tagName: 'header'})) {
return merge(toMerge, prev);
}
- if(prev && prev.is('list')) {
+ if(prev.is('list')) {
var items = prev.contents().filter(function(n) { return n.is('item');});
return merge(toMerge, items[items.length-1]);
}
return toMerge.is({tagName: 'header'});
},
run: function() {
- if(prev && prev.is('p') || prev.is({tagName: 'header'})) {
+ if(prev && (prev.is('p') || prev.is({tagName: 'header'}))) {
return merge(toMerge, prev);
}
}
offsetEnd: params.fragment.endOffset,
textNodeIdx: [params.fragment.startNode.getIndex(), params.fragment.endNode.getIndex()]
});
+ if(wrapper.next() === null) {
+ // span can't be the last node
+ parent.append({text: ''});
+ }
lastTextNode = wrapper.getLastTextNode();
if(lastTextNode) {