X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/83989a968f6af8436bbb37f7a67b82b35a26a2ed..e9aaf1e41c5e695136d06f008c06b287da7d3eda:/src/editor/modules/documentCanvas/canvas/canvas.js diff --git a/src/editor/modules/documentCanvas/canvas/canvas.js b/src/editor/modules/documentCanvas/canvas/canvas.js index 94ad763..b217d18 100644 --- a/src/editor/modules/documentCanvas/canvas/canvas.js +++ b/src/editor/modules/documentCanvas/canvas/canvas.js @@ -73,7 +73,7 @@ $.extend(Canvas.prototype, { createElement: function(wlxmlNode) { var Factory = wlxmlNode.nodeType === Node.TEXT_NODE ? documentElement.DocumentTextElement : documentElement.DocumentNodeElement; - return Factory.create(wlxmlNode, this); + return new Factory(wlxmlNode, this); }, getDocumentElement: function(htmlElement) { @@ -83,26 +83,23 @@ $.extend(Canvas.prototype, { } var $element = $(htmlElement); if(htmlElement.nodeType === Node.ELEMENT_NODE && $element.attr('document-node-element') !== undefined) { - return new documentElement.DocumentNodeElement(htmlElement, this); + return $element.data('canvas-element'); } + + if(htmlElement.nodeType === Node.TEXT_NODE && $element.parent().attr('document-text-element') !== undefined) { + $element = $element.parent(); + } + 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); + return $element.data('canvas-element'); } }, 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); - + this.rootElement = this.createElement(this.wlxmlDocument.root); this.wrapper.empty(); - this.wrapper.append(canvasDOM); - this.d = this.wrapper.children(0); - }, - - generateCanvasDOM: function(wlxmlNode) { - var element = documentElement.DocumentNodeElement.create(wlxmlNode, this); - return element.dom(); + this.wrapper.append(this.rootElement.dom()); }, setupEventHandling: function() { @@ -171,8 +168,8 @@ $.extend(Canvas.prototype, { //textElement.data('wlxmlNode').setText(toSet); //textElement.data('wlxmlNode').document.transform('setText', {node: textElement.data('wlxmlNode'), text: toSet}); - if(textElement.data('wlxmlNode').getText() !== toSet) { - canvas.textHandler.handle(textElement.data('wlxmlNode'), toSet); + if(textElement.wlxmlNode.getText() !== toSet) { + canvas.textHandler.handle(textElement.wlxmlNode, toSet); } } }); @@ -216,10 +213,7 @@ $.extend(Canvas.prototype, { }, doc: function() { - if(this.d === null) { - return null; - } - return this.getDocumentElement(this.d[0]); + return this.rootElement; }, toggleElementHighlight: function(node, toggle) { @@ -251,6 +245,11 @@ $.extend(Canvas.prototype, { }, setCurrentElement: function(element, params) { + if(!element) { + logger.debug('Invalid element passed to setCurrentElement: ' + element); + return; + } + if(!(element instanceof documentElement.DocumentElement)) { element = utils.findCanvasElement(element); } @@ -301,7 +300,7 @@ $.extend(Canvas.prototype, { this._moveCaretToTextElement(textElementToLand, params.caretTo); // as method on element? } if(!(textElementToLand.sameNode(currentTextElement))) { - this.publisher('currentTextElementSet', textElementToLand.data('wlxmlNode')); + this.publisher('currentTextElementSet', textElementToLand.wlxmlNode); } } else { document.getSelection().removeAllRanges(); @@ -310,7 +309,7 @@ $.extend(Canvas.prototype, { if(!(currentNodeElement && currentNodeElement.sameNode(nodeElementToLand))) { _markAsCurrent(nodeElementToLand); - this.publisher('currentNodeElementSet', nodeElementToLand.data('wlxmlNode')); + this.publisher('currentNodeElementSet', nodeElementToLand.wlxmlNode); } },