nodeParent,
returned;
options = options || {};
- if(!(this.document.containsNode(this)) || !insertion.isNew) {
+ if(!(this.document.containsNode(this)) || !insertion.insertsNew) {
nodeParent = insertion.ofNode.parent();
}
+ if(!insertion.insertsNew && insertion.ofNode.isSurroundedByTextNodes()) {
+ var prev = insertion.ofNode.prev(),
+ next = insertion.ofNode.next();
+ prev.setText(prev.getText()+next.getText());
+ next.detach();
+ }
returned = implementation.call(this, insertion.ofNode);
if(!options.silent && returned.sameNode(insertion.ofNode)) {
- this.triggerChangeEvent(insertion.insertsNew ? 'nodeAdded' : 'nodeMoved', {node: insertion.ofNode}, nodeParent, nodeWasContained);
+ if(!insertion.insertsNew) {
+ this.triggerChangeEvent('nodeDetached', {node: insertion.ofNode, parent: nodeParent, move: true});
+ }
+ this.triggerChangeEvent('nodeAdded', {node: insertion.ofNode, move: !insertion.insertsNew}, nodeParent, nodeWasContained);
}
return returned;
};
var newElement = this.document.createDocumentNode({tagName: parentElement.getTagName(), attrs: attrs});
parentElement.after(newElement);
+ succeedingChildren.reverse().forEach(function(child) {
+ newElement.prepend(child);
+ });
if(suffix.length > 0) {
- newElement.append({text: suffix});
+ newElement.prepend({text: suffix});
}
- succeedingChildren.forEach(function(child) {
- newElement.append(child);
- });
return {first: parentElement, second: newElement};
},