return Factory.create(wlxmlNode, this);
},
+ getDocumentElement: function(htmlElement) {
+ /* globals HTMLElement, Text */
+ if(!htmlElement || !(htmlElement instanceof HTMLElement || htmlElement instanceof Text)) {
+ return null;
+ }
+ var $element = $(htmlElement);
+ if(htmlElement.nodeType === Node.ELEMENT_NODE && $element.attr('document-node-element') !== undefined) {
+ return new documentElement.DocumentNodeElement(htmlElement, this);
+ }
+ if($element.attr('document-text-element') !== undefined || (htmlElement.nodeType === Node.TEXT_NODE && $element.parent().attr('document-text-element') !== undefined)) {
+ //return DocumentTextElement.fromHTMLElement(htmlElement, canvas);
+ return new documentElement.DocumentTextElement(htmlElement, this);
+ }
+ },
+
reloadRoot: function() {
var canvasDOM = this.generateCanvasDOM(this.wlxmlDocument.root);
//var canvasDOM = this.wlxmlDocument.root.getData('canvasElement') ? this.wlxmlDocument.root.getData('canvasElement').dom() : this.generateCanvasDOM(this.wlxmlDocument.root);
if(this.d === null) {
return null;
}
- return documentElement.DocumentNodeElement.fromHTMLElement(this.d.get(0), this); //{wlxmlTag: this.d.prop('tagName')};
+ return this.getDocumentElement(this.d[0]);
},
toggleElementHighlight: function(node, toggle) {
element.toggleHighlight(toggle);
},
- getDocumentElement: function(from) {
- /* globals HTMLElement, Text */
- if(from instanceof HTMLElement || from instanceof Text) {
- return documentElement.DocumentElement.fromHTMLElement(from, this);
- }
- },
getCursor: function() {
return new Cursor(this);
},
getCurrentNodeElement: function() {
- return this.getDocumentElement(this.wrapper.find('.current-node-element').parent()[0]);
+ var htmlElement = this.wrapper.find('.current-node-element').parent()[0];
+ if(htmlElement) {
+ return this.getDocumentElement(htmlElement);
+ }
},
getCurrentTextElement: function() {
- return this.getDocumentElement(this.wrapper.find('.current-text-element')[0]);
+ var htmlElement = this.wrapper.find('.current-text-element')[0];
+ if(htmlElement) {
+ return this.getDocumentElement(htmlElement);
+ }
},
contains: function(element) {
this._setupDOMHandler(htmlElement);
};
-
-$.extend(DocumentElement, {
- fromHTMLElement: function(htmlElement, canvas) {
- var $element = $(htmlElement);
- if(htmlElement.nodeType === Node.ELEMENT_NODE && $element.attr('document-node-element') !== undefined) {
- return DocumentNodeElement.fromHTMLElement(htmlElement, canvas);
- }
- if($element.attr('document-text-element') !== undefined || (htmlElement.nodeType === Node.TEXT_NODE && $element.parent().attr('document-text-element') !== undefined)) {
- return DocumentTextElement.fromHTMLElement(htmlElement, canvas);
- }
- return undefined;
- }
-});
-
$.extend(DocumentElement.prototype, {
_setupDOMHandler: function(htmlElement) {
this.$element = $(htmlElement);
parent: function() {
var parents = this.$element.parents('[document-node-element]');
if(parents.length) {
- return DocumentElement.fromHTMLElement(parents[0], this.canvas);
+ return this.canvas.getDocumentElement(parents[0]);
}
return null;
},
};
$.extend(DocumentNodeElement, {
- fromHTMLElement: function(htmlElement, canvas) {
- return new this(htmlElement, canvas);
- },
-
create: function(wlxmlNode, canvas) {
var dom = $('<div>')
.attr('document-node-element', ''),
// Make sure widgets aren't navigable with arrow keys
widgetsContainer.find('*').add(widgetsContainer).attr('tabindex', -1);
- var element = this.fromHTMLElement(dom[0], canvas);
+ var element = canvas.getDocumentElement(dom[0]);
element.data('wlxmlNode', wlxmlNode);
wlxmlNode.setData('canvasElement', element);
var elementContent = this._container().contents();
var element = this;
elementContent.each(function() {
- var childElement = DocumentElement.fromHTMLElement(this, element.canvas);
+ var childElement = element.canvas.getDocumentElement(this);
if(childElement === undefined) {
return true;
}
var dom = $('<div>')
.attr('document-text-element', '')
.text(wlxmlTextNode.getText() || utils.unicode.ZWS),
- element = this.fromHTMLElement(dom[0], canvas);
+ element = canvas.getDocumentElement(dom[0]);
element.data('wlxmlNode', wlxmlTextNode);
return element;
},
- fromHTMLElement: function(htmlElement, canvas) {
- return new this(htmlElement, canvas);
- },
-
isContentContainer: function(htmlElement) {
return htmlElement.nodeType === Node.TEXT_NODE && $(htmlElement).parent().is('[document-text-element]');
}
if(params instanceof DocumentNodeElement) {
element = params;
} else {
- element = this.canvas.createElement(params, this.canvas);
+ element = this.canvas.createElement(params);
}
this.dom().wrap('<div>');
this.dom().parent().before(element.dom());