From: Aleksander Ɓukasz Date: Thu, 6 Mar 2014 15:42:31 +0000 (+0100) Subject: refactoring: fromHTMLElement @ canvas, no need to pass canvas instance X-Git-Url: https://git.mdrn.pl/fnpeditor.git/commitdiff_plain/83989a968f6af8436bbb37f7a67b82b35a26a2ed?ds=sidebyside refactoring: fromHTMLElement @ canvas, no need to pass canvas instance --- diff --git a/src/editor/modules/documentCanvas/canvas/canvas.js b/src/editor/modules/documentCanvas/canvas/canvas.js index 937d580..94ad763 100644 --- a/src/editor/modules/documentCanvas/canvas/canvas.js +++ b/src/editor/modules/documentCanvas/canvas/canvas.js @@ -76,6 +76,21 @@ $.extend(Canvas.prototype, { 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); @@ -204,7 +219,7 @@ $.extend(Canvas.prototype, { 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) { @@ -212,23 +227,23 @@ $.extend(Canvas.prototype, { 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) { diff --git a/src/editor/modules/documentCanvas/canvas/documentElement.js b/src/editor/modules/documentCanvas/canvas/documentElement.js index 0f49863..60e179d 100644 --- a/src/editor/modules/documentCanvas/canvas/documentElement.js +++ b/src/editor/modules/documentCanvas/canvas/documentElement.js @@ -18,20 +18,6 @@ var DocumentElement = function(htmlElement, canvas) { 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); @@ -53,7 +39,7 @@ $.extend(DocumentElement.prototype, { 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; }, @@ -134,10 +120,6 @@ var DocumentNodeElement = function(htmlElement, canvas) { }; $.extend(DocumentNodeElement, { - fromHTMLElement: function(htmlElement, canvas) { - return new this(htmlElement, canvas); - }, - create: function(wlxmlNode, canvas) { var dom = $('
') .attr('document-node-element', ''), @@ -151,7 +133,7 @@ $.extend(DocumentNodeElement, { // 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); @@ -213,7 +195,7 @@ $.extend(DocumentNodeElement.prototype, { 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; } @@ -318,15 +300,11 @@ $.extend(DocumentTextElement, { var dom = $('
') .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]'); } @@ -387,7 +365,7 @@ $.extend(DocumentTextElement.prototype, { if(params instanceof DocumentNodeElement) { element = params; } else { - element = this.canvas.createElement(params, this.canvas); + element = this.canvas.createElement(params); } this.dom().wrap('
'); this.dom().parent().before(element.dom());