X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/f2cfe219c603d0d912b5bd0484e22725026d85aa..83989a968f6af8436bbb37f7a67b82b35a26a2ed:/src/editor/modules/documentCanvas/canvas/documentElement.js diff --git a/src/editor/modules/documentCanvas/canvas/documentElement.js b/src/editor/modules/documentCanvas/canvas/documentElement.js index 60e79de..60e179d 100644 --- a/src/editor/modules/documentCanvas/canvas/documentElement.js +++ b/src/editor/modules/documentCanvas/canvas/documentElement.js @@ -2,9 +2,8 @@ define([ 'libs/jquery', 'libs/underscore', 'modules/documentCanvas/canvas/utils', -'modules/documentCanvas/canvas/widgets', 'modules/documentCanvas/canvas/wlxmlManagers' -], function($, _, utils, widgets, wlxmlManagers) { +], function($, _, utils, wlxmlManagers) { 'use strict'; /* global Node:false, document:false */ @@ -19,28 +18,6 @@ var DocumentElement = function(htmlElement, canvas) { this._setupDOMHandler(htmlElement); }; - -var elementTypeFromWlxmlNode = function(wlxmlNode) { - return wlxmlNode.nodeType === Node.TEXT_NODE ? DocumentTextElement : DocumentNodeElement; -}; - -$.extend(DocumentElement, { - create: function(node, canvas) { - return elementTypeFromWlxmlNode(node).create(node, canvas); - }, - - 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); @@ -62,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; }, @@ -144,14 +121,6 @@ var DocumentNodeElement = function(htmlElement, canvas) { $.extend(DocumentNodeElement, { create: function(wlxmlNode, canvas) { - return this.fromHTMLElement(this.createDOM(wlxmlNode, canvas)[0], canvas); - }, - - fromHTMLElement: function(htmlElement, canvas) { - return new this(htmlElement, canvas); - }, - - createDOM: function(wlxmlNode, canvas) { var dom = $('
') .attr('document-node-element', ''), widgetsContainer = $('
') @@ -164,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); @@ -172,12 +141,11 @@ $.extend(DocumentNodeElement, { element.setWlxml({tag: wlxmlNode.getTagName(), klass: wlxmlNode.getClass()}); wlxmlNode.contents().forEach(function(node) { - container.append(DocumentElement.create(node, canvas).dom()); + container.append(canvas.createElement(node).dom()); }.bind(this)); - return dom; + return element; } - }); var manipulate = function(e, params, action) { @@ -185,7 +153,7 @@ var manipulate = function(e, params, action) { if(params instanceof DocumentElement) { element = params; } else { - element = DocumentElement.create(params); + element = e.canvas.createElement(params); } var target = (action === 'append' || action === 'prepend') ? e._container() : e.dom(); target[action](element.dom()); @@ -205,9 +173,6 @@ $.extend(DocumentNodeElement.prototype, { return this; }, append: function(params) { - if(params.tag !== 'span') { - this.data('orig-end', undefined); - } return manipulate(this, params, 'append'); }, prepend: function(params) { @@ -230,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; } @@ -331,22 +296,15 @@ var DocumentTextElement = function(htmlElement, canvas) { }; $.extend(DocumentTextElement, { - createDOM: function(wlxmlTextNode, canvas) { + create: function(wlxmlTextNode, canvas) { 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 dom; - }, - - create: function(wlxmlTextNode, canvas) { - return this.fromHTMLElement(this.createDOM(wlxmlTextNode, canvas)[0], canvas); + 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]'); } @@ -392,7 +350,7 @@ $.extend(DocumentTextElement.prototype, { if(params instanceof DocumentNodeElement) { element = params; } else { - element = DocumentElement.create(params, this.canvas); + element = this.canvas.createElement(params); } this.dom().wrap('
'); this.dom().parent().after(element.dom()); @@ -407,7 +365,7 @@ $.extend(DocumentTextElement.prototype, { if(params instanceof DocumentNodeElement) { element = params; } else { - element = DocumentNodeElement.create(params, this.canvas); + element = this.canvas.createElement(params); } this.dom().wrap('
'); this.dom().parent().before(element.dom()); @@ -415,27 +373,6 @@ $.extend(DocumentTextElement.prototype, { return element; }, - divide: function(params) { - var myText = this.getText(); - - if(params.offset === myText.length) { - return this.after(params); - } - if(params.offset === 0) { - return this.before(params); - } - - var lhsText = myText.substr(0, params.offset), - rhsText = myText.substr(params.offset), - newElement = DocumentNodeElement.create({tag: params.tag, klass: params.klass}, this.canvas), - rhsTextElement = DocumentTextElement.create({text: rhsText}); - - this.setText(lhsText); - this.after(newElement); - newElement.after(rhsTextElement); - return newElement; - }, - toggleHighlight: function() { // do nothing for now }