X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/080240adecd1131b9d3c4e2a0b58a7f922c4ec80..88fd67cfb21bf9b51d2d070de059dc4bbbab63dd:/src/smartxml/core.js?ds=sidebyside diff --git a/src/smartxml/core.js b/src/smartxml/core.js index ec2c643..a2d39a6 100644 --- a/src/smartxml/core.js +++ b/src/smartxml/core.js @@ -32,6 +32,10 @@ var documentNodeTransformations = { this._$.detach(); if(existed) { this.triggerChangeEvent('nodeDetached', {parent: parent}); + if(!parent) { + // This was the root of the document + this.document._defineDocumentProperties(null); + } } return this; }, @@ -41,9 +45,12 @@ var documentNodeTransformations = { if(this.isRoot()) { return this.document.replaceRoot(node); } - toret = this.after(node); - this.detach(); - return toret; + if(this.parent()) { + toret = this.after(node); + this.detach(); + return toret; + } + throw new Error('Cannot replace node without a parent.'); }, after: INSERTION(function(node) { @@ -70,8 +77,9 @@ var documentNodeTransformations = { wrapWith: function(node) { var insertion = this.getNodeInsertion(node); - if(this.parent()) { - this.before(insertion.ofNode); + + if(this.parent() || this.isRoot()) { + this.replaceWith(insertion.ofNode); } insertion.ofNode.append(this); return insertion.ofNode;