')
.attr('document-node-element', ''),
widgetsContainer = $('
')
@@ -209,35 +168,18 @@ $.extend(DocumentNodeElement, {
var element = this.fromHTMLElement(dom[0], canvas);
- element.setWlxml({tag: wlxmlNode.getTagName(), klass: wlxmlNode.getClass()});
-
- _.keys(wlxmlNode.getMetaAttributes()).forEach(function(key) {
- element.setWlxmlMetaAttr(key, params.meta[key]);
- });
-
- //element.data('other-attrs', params.others);
+ element.data('wlxmlNode', wlxmlNode);
+ wlxmlNode.setData('canvasElement', element);
- // element.contents
+ element.setWlxml({tag: wlxmlNode.getTagName(), klass: wlxmlNode.getClass()});
wlxmlNode.contents().forEach((function(node) {
- container.append(DocumentElement.create2(node).dom());
+ container.append(DocumentElement.create(node).dom());
}).bind(this));
- // if(params.rawChildren && params.rawChildren.length) {
- // container.append(params.rawChildren);
- // } else if(params.prepopulateOnEmpty) {
- // element.append(DocumentTextElement.create({text: ''}));
- // }
return dom;
- },
-
- create2: function(params, canvas) {
- return this.fromHTMLElement2(this.createDOM2(params, canvas)[0], canvas);
- },
-
- fromHTMLElement2: function(htmlElement, canvas) {
- return new this(htmlElement, canvas);
}
+
});
var manipulate = function(e, params, action) {
@@ -320,81 +262,6 @@ $.extend(DocumentNodeElement.prototype, {
element2: parent.children()[myIdx + childrenLength-1 + (moveRightRange ? 1 : 0)]
};
},
- data: function() {
- var dom = this.dom(),
- args = Array.prototype.slice.call(arguments, 0);
- if(args.length === 2 && args[1] === undefined)
- return dom.removeData(args[0]);
- return dom.data.apply(dom, arguments);
- },
- toXML: function(level) {
- var node = $('<' + this.getWlxmlTag() + '>');
-
- if(this.getWlxmlClass())
- node.attr('class', this.getWlxmlClass());
- var meta = this.getWlxmlMetaAttrs();
- meta.forEach(function(attr) {
- if(attr.value)
- node.attr('meta-' + attr.name, attr.value);
- });
- _.keys(this.data('other-attrs') || {}).forEach(function(key) {
- node.attr(key, this.data('other-attrs')[key]);
- }, this);
-
- var addFormatting = function() {
- var toret = $('
');
- var formattings = {};
-
- if(this.data('orig-before') !== undefined) {
- if(this.data('orig-before')) {
- toret.prepend(document.createTextNode(this.data('orig-before')));
- }
- } else if(level && this.getWlxmlTag() !== 'span') {
- toret.append('\n' + (new Array(level * 2 + 1)).join(' '));
- }
-
- toret.append(node);
-
- if(this.data('orig-after')) {
- toret.append(document.createTextNode(this.data('orig-after')));
- }
-
- /* Inside node */
- if(this.data('orig-begin')) {
- node.prepend(this.data('orig-begin'));
- formattings.begin = true;
- }
-
- if(this.data('orig-end') !== undefined) {
- if(this.data('orig-end')) {
- node.append(this.data('orig-end'));
- }
- } else if(this.getWlxmlTag() !== 'span' && children.length){
- node.append('\n' + (new Array(level * 2 + 1)).join(' '));
- }
-
- return {parts: toret.contents(), formattings: formattings};
- }.bind(this);
-
-
-
- var children = this.children(),
- childParts;
-
- var formatting = addFormatting(node);
-
- for(var i = children.length - 1; i >= 0; i--) {
- childParts = children[i].toXML(level + 1);
- if(typeof childParts === 'string')
- childParts = [document.createTextNode(childParts)];
-
- if(formatting.formattings.begin) {
- $(node.contents()[0]).after(childParts);
- } else
- node.prepend(childParts);
- }
- return formatting.parts;
- },
append: function(params) {
if(params.tag !== 'span')
this.data('orig-end', undefined);
@@ -463,12 +330,6 @@ $.extend(DocumentNodeElement.prototype, {
setWlxmlClass: function(klass) {
if(klass === this.getWlxmlClass())
return;
-
- this.getWlxmlMetaAttrs().forEach(function(attr) {
- if(!classAttributes.hasMetaAttr(klass, attr.name))
- this.dom().removeAttr('wlxml-meta-' + attr.name);
- }, this);
-
if(klass)
this._container().attr('wlxml-class', klass.replace(/\./g, '-'));
else
@@ -495,24 +356,6 @@ $.extend(DocumentNodeElement.prototype, {
return true;
return false;
},
-
- getWlxmlMetaAttr: function(attr) {
- return this.dom().attr('wlxml-meta-'+attr);
- },
-
- getWlxmlMetaAttrs: function() {
- var toret = [];
- var attrList = classAttributes.getMetaAttrsList(this.getWlxmlClass());
- attrList.all.forEach(function(attr) {
- toret.push({name: attr.name, value: this.getWlxmlMetaAttr(attr.name) || ''});
- }, this);
- return toret;
- },
-
- setWlxmlMetaAttr: function(attr, value) {
- this.dom().attr('wlxml-meta-'+attr, value);
- },
-
toggleLabel: function(toggle) {
var displayCss = toggle ? 'inline-block' : 'none';
var label = this.dom().children('.canvas-widgets').find('.canvas-widget-label');
@@ -539,24 +382,17 @@ var DocumentTextElement = function(htmlElement, canvas) {
};
$.extend(DocumentTextElement, {
- createDOM: function(params) {
- return $('
')
- .attr('document-text-element', '')
- .text(params.text || utils.unicode.ZWS);
- },
-
- createDOM2: function(wlxmlTextNode) {
- return $('
')
+ createDOM: function(wlxmlTextNode) {
+ var dom = $('
')
.attr('document-text-element', '')
- .text(wlxmlTextNode.getText() || utils.unicode.ZWS);
- },
-
- create: function(params, canvas) {
- return this.fromHTMLElement(this.createDOM(params)[0]);
+ .text(wlxmlTextNode.getText() || utils.unicode.ZWS),
+ element = this.fromHTMLElement(dom[0], this);
+ element.data('wlxmlNode', wlxmlTextNode);
+ return dom;
},
- create2: function(wlxmlTextNode, canvas) {
- return this.fromHTMLElement(this.createDOM2(wlxmlTextNode)[0]);
+ create: function(wlxmlTextNode, canvas) {
+ return this.fromHTMLElement(this.createDOM(wlxmlTextNode)[0]);
},
fromHTMLElement: function(htmlElement, canvas) {
@@ -570,9 +406,6 @@ $.extend(DocumentTextElement, {
DocumentTextElement.prototype = new DocumentElement();
$.extend(DocumentTextElement.prototype, {
- toXML: function(parent) {
- return this.getText();
- },
_setupDOMHandler: function(htmlElement) {
var $element = $(htmlElement);
if(htmlElement.nodeType === Node.TEXT_NODE)
@@ -594,8 +427,13 @@ $.extend(DocumentTextElement.prototype, {
prependText: function(text) {
this.dom().contents()[0].data = text + this.dom().contents()[0].data;
},
- getText: function() {
- return this.dom().text().replace(utils.unicode.ZWS, '');
+ getText: function(options) {
+ options = _.extend({raw: false}, options || {});
+ var toret = this.dom().text();
+ if(!options.raw) {
+ toret = toret.replace(utils.unicode.ZWS, '');
+ }
+ return toret;
},
isEmpty: function() {
// Having at least Zero Width Space is guaranteed be Content Observer