X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/2e14f0181735b7acd0da023eb4c9524b75a45b56..51a333278c2989a5a0022c19404bd257bf55cb27:/src/editor/modules/documentCanvas/canvas/documentElement.js diff --git a/src/editor/modules/documentCanvas/canvas/documentElement.js b/src/editor/modules/documentCanvas/canvas/documentElement.js index 99e97d0..956d0a7 100644 --- a/src/editor/modules/documentCanvas/canvas/documentElement.js +++ b/src/editor/modules/documentCanvas/canvas/documentElement.js @@ -11,6 +11,10 @@ define([ var DocumentElement = function(wlxmlNode, canvas) { this.wlxmlNode = wlxmlNode; this.canvas = canvas; + this.state = { + exposed: false, + active: false + }; this.dom = this.createDOM(); this.dom.data('canvas-element', this); @@ -26,6 +30,21 @@ $.extend(DocumentElement.prototype, { refresh: function() { // noop }, + updateState: function(toUpdate) { + var changes = {}; + _.keys(toUpdate) + .filter(function(key) { + return this.state.hasOwnProperty(key); + }.bind(this)) + .forEach(function(key) { + if(this.state !== toUpdate[key]) { + this.state[key] = changes[key] = toUpdate[key]; + } + }.bind(this)); + if(_.isFunction(this.onStateChange)) { + this.onStateChange(changes); + } + }, parent: function() { var parents = this.dom.parents('[document-node-element]'); if(parents.length) { @@ -102,7 +121,7 @@ $.extend(DocumentNodeElement.prototype, { contentContainer = $('
') .attr('document-element-content', ''); - wrapper.append(widgetsContainer, contentContainer); + wrapper.append(contentContainer, widgetsContainer); widgetsContainer.find('*').add(widgetsContainer).attr('tabindex', -1); return wrapper; }, @@ -112,7 +131,6 @@ $.extend(DocumentNodeElement.prototype, { detach: function() { var parents = this.parents(); this.dom.detach(); - this.canvas = null; if(parents[0]) { parents[0].refreshPath(); } @@ -126,17 +144,6 @@ $.extend(DocumentNodeElement.prototype, { return manipulate(this, params, 'after'); }, - toggleLabel: function(toggle) { - var displayCss = toggle ? 'inline-block' : 'none'; - var label = this.dom.children('.canvas-widgets').find('.canvas-widget-label'); - label.css('display', displayCss); - this.toggleHighlight(toggle); - }, - - toggleHighlight: function(toggle) { - this._container().toggleClass('highlighted-element', toggle); - }, - isBlock: function() { return this.dom.css('display') === 'block'; }, @@ -186,11 +193,15 @@ $.extend(DocumentTextElement.prototype, { }, detach: function() { this.dom.detach(); - this.canvas = null; return this; }, setText: function(text) { - this.dom.contents()[0].data = text; + if(text === '') { + text = utils.unicode.ZWS; + } + if(text !== this.getText()) { + this.dom.contents()[0].data = text; + } }, getText: function(options) { options = _.extend({raw: false}, options || {}); @@ -237,9 +248,6 @@ $.extend(DocumentTextElement.prototype, { return element; }, - toggleHighlight: function() { - // do nothing for now - }, children: function() { return []; }