}.bind(this));
if(_.isFunction(this.onStateChange)) {
this.onStateChange(changes);
+ if(_.isBoolean(changes.active)) {
+ if(changes.active) {
+ var ptr = this;
+ while(ptr && ptr.wlxmlNode.getTagName() === 'span') {
+ ptr = ptr.parent();
+ }
+ if(ptr && ptr.gutterGroup) {
+ ptr.gutterGroup.show();
+ }
+ }
+ }
}
},
parent: function() {
} 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;
};
clearWidgets: function() {
this.dom.children('.canvas-widgets').empty();
},
+ addToGutter: function(view) {
+ if(!this.gutterGroup) {
+ this.gutterGroup = this.canvas.gutter.createViewGroup({
+ offsetHint: function() {
+ return this.canvas.getElementOffset(this);
+ }.bind(this)
+ }, this);
+ }
+ this.gutterGroup.addView(view);
+ },
handle: function(event) {
var method = 'on' + event.type[0].toUpperCase() + event.type.substr(1);
if(this[method]) {
_container: function() {
return this.dom.children('[document-element-content]');
},
- detach: function() {
- var parents = this.parents();
- this.dom.detach();
- if(parents[0]) {
- parents[0].refreshPath();
+ detach: function(isChild) {
+ var parents;
+
+ if(this.gutterGroup) {
+ this.gutterGroup.remove();
+ }
+ if(_.isFunction(this.children)) {
+ this.children().forEach(function(child) {
+ child.detach(true);
+ });
+ }
+
+ if(!isChild) {
+ parents = this.parents();
+ this.dom.detach();
+ if(parents[0]) {
+ parents[0].refreshPath();
+ }
}
- return this;
+ return this;
},
before: function(params) {
return manipulate(this, params, 'before');
.text(this.wlxmlNode.getText() || utils.unicode.ZWS);
return dom;
},
- detach: function() {
- this.dom.detach();
+ detach: function(isChild) {
+ if(!isChild) {
+ this.dom.detach();
+ }
return this;
},
setText: function(text) {
this.dom.contents()[0].data = text;
}
},
+ handle: function(event) {
+ this.setText(event.meta.node.getText());
+ },
getText: function(options) {
options = _.extend({raw: false}, options || {});
var toret = this.dom.text();
} else {
element = this.canvas.createElement(params);
}
- this.dom.wrap('<div>');
- this.dom.parent().after(element.dom);
- this.dom.unwrap();
- this.refreshPath();
+ if(element.dom) {
+ this.dom.wrap('<div>');
+ this.dom.parent().after(element.dom);
+ this.dom.unwrap();
+ this.refreshPath();
+ }
return element;
},
before: function(params) {
} else {
element = this.canvas.createElement(params);
}
- this.dom.wrap('<div>');
- this.dom.parent().before(element.dom);
- this.dom.unwrap();
- this.refreshPath();
+ if(element.dom) {
+ this.dom.wrap('<div>');
+ this.dom.parent().before(element.dom);
+ this.dom.unwrap();
+ this.refreshPath();
+ }
return element;
},