X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/25e14ce74de1ecdd95f36cb19e231b5a66898038..9aa850ad8fb519b03bb854f3b731af32e42c54fa:/modules/documentCanvas/canvas/documentElement.js diff --git a/modules/documentCanvas/canvas/documentElement.js b/modules/documentCanvas/canvas/documentElement.js index 4a236df..4c09b75 100644 --- a/modules/documentCanvas/canvas/documentElement.js +++ b/modules/documentCanvas/canvas/documentElement.js @@ -74,7 +74,7 @@ $.extend(DocumentElement.prototype, { }, wrapWithNodeElement: function(wlxmlNode) { - var wrapper = DocumentNodeElement.create({tag: wlxmlNode.tag, klass: wlxmlNode.klass}); + var wrapper = DocumentNodeElement.create({tag: wlxmlNode.tag, klass: wlxmlNode.klass}, this); this.dom().replaceWith(wrapper.dom()); wrapper.append(this); return wrapper; @@ -103,6 +103,18 @@ $.extend(DocumentElement.prototype, { isVisible: function() { return this instanceof DocumentTextElement || this.getWlxmlTag() !== 'metadata'; + }, + + isInsideList: function() { + return this.parents().some(function(parent) { + return parent.is('list'); + }); + }, + + exec: function(method) { + var manager = this.data('_wlxmlManager'); + if(manager[method]) + return manager[method].apply(manager, Array.prototype.slice.call(arguments, 1)); } }); @@ -128,9 +140,7 @@ $.extend(DocumentNodeElement, { var element = this.fromHTMLElement(dom[0], canvas); - element.setWlxmlTag(params.tag); - if(params.klass) - element.setWlxmlClass(params.klass); + element.setWlxml({tag: params.tag, klass: params.klass}); if(params.meta) { _.keys(params.meta).forEach(function(key) { element.setWlxmlMetaAttr(key, params.meta[key]); @@ -321,7 +331,8 @@ $.extend(DocumentNodeElement.prototype, { return; this._container().attr('wlxml-tag', tag); - this._updateWlxmlManager(); + if(!this.__updatingWlxml) + this._updateWlxmlManager(); }, getWlxmlClass: function() { var klass = this._container().attr('wlxml-class'); @@ -342,7 +353,17 @@ $.extend(DocumentNodeElement.prototype, { this._container().attr('wlxml-class', klass.replace(/\./g, '-')); else this._container().removeAttr('wlxml-class'); + if(!this.__updatingWlxml) + this._updateWlxmlManager(); + }, + setWlxml: function(params) { + this.__updatingWlxml = true; + if(params.tag !== undefined) + this.setWlxmlTag(params.tag); + if(params.klass !== undefined) + this.setWlxmlClass(params.klass); this._updateWlxmlManager(); + this.__updatingWlxml = false; }, _updateWlxmlManager: function() { var manager = wlxmlManagers.getFor(this);