this._setupDOMHandler(htmlElement);
}
-var elementTypeFromParams = function(params) {
- return params.text !== undefined ? DocumentTextElement : DocumentNodeElement;
-};
-
-var elementTypeFromNode = function(wlxmlNode) {
+var elementTypeFromWlxmlNode = function(wlxmlNode) {
return wlxmlNode.nodeType === Node.TEXT_NODE ? DocumentTextElement : DocumentNodeElement;
}
$.extend(DocumentElement, {
- create: function(params, canvas) {
- return elementTypeFromParams(params).create(params);
- },
-
- create2: function(node, canvas) {
- return elementTypeFromNode(node).create2(node, canvas);
+ create: function(node, canvas) {
+ return elementTypeFromWlxmlNode(node).create(node, canvas);
},
createDOM: function(wlxmlNode) {
dom: function() {
return this.$element;
},
+ 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);
+ },
parent: function() {
var parents = this.$element.parents('[document-node-element]');
if(parents.length)
};
$.extend(DocumentNodeElement, {
- createDOM: function(params, canvas) {
- var dom = $('<div>')
- .attr('document-node-element', ''),
- widgetsContainer = $('<div>')
- .addClass('canvas-widgets')
- .attr('contenteditable', false),
- container = $('<div>')
- .attr('document-element-content', '');
-
- dom.append(widgetsContainer, container);
- // Make sure widgets aren't navigable with arrow keys
- widgetsContainer.find('*').add(widgetsContainer).attr('tabindex', -1);
-
- var element = this.fromHTMLElement(dom[0], canvas);
-
- element.setWlxml({tag: params.tag, klass: params.klass});
- if(params.meta) {
- _.keys(params.meta).forEach(function(key) {
- element.setWlxmlMetaAttr(key, params.meta[key]);
- });
- }
- element.data('other-attrs', params.others);
-
- if(params.rawChildren && params.rawChildren.length) {
- container.append(params.rawChildren);
- } else if(params.prepopulateOnEmpty) {
- element.append(DocumentTextElement.create({text: ''}));
- }
- return dom;
- },
-
- create: function(params, canvas) {
- return this.fromHTMLElement(this.createDOM(params, canvas)[0], canvas);
+ create: function(wlxmlNode, canvas) {
+ return this.fromHTMLElement(this.createDOM(wlxmlNode, canvas)[0], canvas);
},
fromHTMLElement: function(htmlElement, canvas) {
return new this(htmlElement, canvas);
},
- createDOM2: function(wlxmlNode, canvas) {
-
- // tag: wlxmlNode.getTagName(),
- // klass: wlxmlNode.getClass(), //currentTag.attr('class'),
- // meta: wlxmlNode.getMetaAttributes(), //meta,
- // others: wlxmlNode.getOtherAttributes(), // ~ //others,
- // rawChildren: wlxmlNode.contents(),
- // prepopulateOnEmpty: true
-
+ createDOM: function(wlxmlNode, canvas) {
var dom = $('<div>')
.attr('document-node-element', ''),
widgetsContainer = $('<div>')
var element = this.fromHTMLElement(dom[0], canvas);
+ element.data('wlxmlNode', wlxmlNode);
+ wlxmlNode.setData('canvasElement', element);
+
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.contents
-
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) {
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() + '>');
};
$.extend(DocumentTextElement, {
- createDOM: function(params) {
- return $('<div>')
- .attr('document-text-element', '')
- .text(params.text || utils.unicode.ZWS);
- },
-
- createDOM2: function(wlxmlTextNode) {
- return $('<div>')
+ createDOM: function(wlxmlTextNode) {
+ var dom = $('<div>')
.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) {
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