X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/4dae03fed5ec90a39dea2473a3e3f0188df90ffe..d8c1b8422ef879e737e05f60f7ac401af31b6049:/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 3073e72..570973e 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) {
@@ -71,8 +90,10 @@ var manipulate = function(e, params, action) {
} else {
element = e.canvas.createElement(params);
}
- e.dom[action](element.dom);
- e.refreshPath();
+ if(element.dom) {
+ e.dom[action](element.dom);
+ e.refreshPath();
+ }
return element;
};
@@ -102,7 +123,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 +133,6 @@ $.extend(DocumentNodeElement.prototype, {
detach: function() {
var parents = this.parents();
this.dom.detach();
- this.canvas = null;
if(parents[0]) {
parents[0].refreshPath();
}
@@ -126,17 +146,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,7 +195,6 @@ $.extend(DocumentTextElement.prototype, {
},
detach: function() {
this.dom.detach();
- this.canvas = null;
return this;
},
setText: function(text) {
@@ -219,10 +227,12 @@ $.extend(DocumentTextElement.prototype, {
} else {
element = this.canvas.createElement(params);
}
- this.dom.wrap('
');
- this.dom.parent().after(element.dom);
- this.dom.unwrap();
- this.refreshPath();
+ if(element.dom) {
+ this.dom.wrap('
');
+ this.dom.parent().after(element.dom);
+ this.dom.unwrap();
+ this.refreshPath();
+ }
return element;
},
before: function(params) {
@@ -235,16 +245,15 @@ $.extend(DocumentTextElement.prototype, {
} else {
element = this.canvas.createElement(params);
}
- this.dom.wrap('
');
- this.dom.parent().before(element.dom);
- this.dom.unwrap();
- this.refreshPath();
+ if(element.dom) {
+ this.dom.wrap('
');
+ this.dom.parent().before(element.dom);
+ this.dom.unwrap();
+ this.refreshPath();
+ }
return element;
},
- toggleHighlight: function() {
- // do nothing for now
- },
children: function() {
return [];
}