this.dom = this.createDOM();
this.dom.data('canvas-element', this);
+ this.wlxmlNode.setData('canvasElement', this);
};
$.extend(DocumentElement.prototype, {
// DocumentNodeElement represents an element node from WLXML document rendered inside Canvas
var DocumentNodeElement = function(wlxmlNode, canvas) {
DocumentElement.call(this, wlxmlNode, canvas);
- wlxmlNode.setData('canvasElement', this);
this.init(this.dom);
};
createDOM: function() {
var wrapper = $('<div>').attr('document-node-element', ''),
widgetsContainer = $('<div>')
- .addClass('canvas-widgets')
- .attr('contenteditable', false),
+ .addClass('canvas-widgets'),
contentContainer = $('<div>')
.attr('document-element-content', '');
_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);
+ });
}
- return this;
+
+ if(!isChild) {
+ parents = this.parents();
+ this.dom.detach();
+ if(parents[0]) {
+ parents[0].refreshPath();
+ }
+ }
+ 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) {