X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/2687ec6cbbe8101a4faa232c79f5c1321dcebe6d..e99c67c2ec195bc34e345616a054966b6cc1554f:/src/smartxml/fragments.js?ds=sidebyside diff --git a/src/smartxml/fragments.js b/src/smartxml/fragments.js index 9bb92cc..d932592 100644 --- a/src/smartxml/fragments.js +++ b/src/smartxml/fragments.js @@ -19,18 +19,24 @@ $.extend(Fragment.prototype, { var NodeFragment = function(document, params) { Fragment.call(this, document); this.node = params.node; + this.nodePath = this.isValid() ? params.node.getPath() : null; }; NodeFragment.prototype = Object.create(Fragment.prototype); $.extend(NodeFragment.prototype, { isValid: function() { return this.document.containsNode(this.node); + }, + restoreFromPaths: function() { + if(this.nodePath) { + this.node = this.document.getNodeByPath(this.nodePath); + } } }); var CaretFragment = function(document, params) { - NodeFragment.call(this, document, params); this.offset = params.offset; + NodeFragment.call(this, document, params); }; CaretFragment.prototype = Object.create(NodeFragment.prototype); @@ -58,15 +64,24 @@ var RangeFragment = function(document, params) { this[prefix + 'Node'] = params['node'+(idx+1)]; }.bind(this)); } + this.startNodePath = this.startNode.getPath(); + this.endNodePath = this.endNode.getPath(); }; RangeFragment.prototype = Object.create(Fragment.prototype); $.extend(RangeFragment.prototype, { isValid: function() { return this.document.containsNode(this.startNode) && this.document.containsNode(this.endNode); }, + restoreFromPaths: function() { + this.startNode = this.document.getNodeByPath(this.startNodePath); + this.endNode = this.document.getNodeByPath(this.endNodePath); + }, hasSiblingBoundries: function() { return this.isValid() && this.startNode.isSiblingOf(this.endNode); }, + hasSameBoundries: function() { + return this.isValid() && this.startNode.sameNode(this.endNode); + }, boundriesSiblingParents: function() { return this.startNode.document.getSiblingParents({ node1: this.startNode,