X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/efe36f4f1b5df351eeb4d40a54c3900cf9a7079b..e3d38a12c37e706077d9a42194fb80eb05e12658:/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 0627bc1..4378e73 100644 --- a/src/editor/modules/documentCanvas/canvas/documentElement.js +++ b/src/editor/modules/documentCanvas/canvas/documentElement.js @@ -18,18 +18,18 @@ var DocumentElement = function(htmlElement, canvas) { this._setupDOMHandler(htmlElement); } -var elementTypeFromParams = function(params) { - return params.text !== undefined ? DocumentTextElement : DocumentNodeElement; -}; +var elementTypeFromWlxmlNode = function(wlxmlNode) { + return wlxmlNode.nodeType === Node.TEXT_NODE ? DocumentTextElement : DocumentNodeElement; +} $.extend(DocumentElement, { - create: function(params, canvas) { - return elementTypeFromParams(params).create(params); + create: function(node, canvas) { + return elementTypeFromWlxmlNode(node).create(node, canvas); }, - createDOM: function(params) { - return elementTypeFromParams(params).createDOM(params); + createDOM: function(wlxmlNode) { + return elementTypeFromParams(wlxmlNode).createDOM(params); }, fromHTMLElement: function(htmlElement, canvas) { @@ -139,7 +139,15 @@ var DocumentNodeElement = function(htmlElement, canvas) { }; $.extend(DocumentNodeElement, { - createDOM: function(params, canvas) { + 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 = $('
') @@ -154,29 +162,19 @@ $.extend(DocumentNodeElement, { 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); + element.setWlxml({tag: wlxmlNode.getTagName(), klass: wlxmlNode.getClass()}); - if(params.rawChildren && params.rawChildren.length) { - container.append(params.rawChildren); - } else if(params.prepopulateOnEmpty) { - element.append(DocumentTextElement.create({text: ''})); - } - return dom; - }, + _.keys(wlxmlNode.getMetaAttributes()).forEach(function(key) { + element.setWlxmlMetaAttr(key, params.meta[key]); + }); - create: function(params, canvas) { - return this.fromHTMLElement(this.createDOM(params, canvas)[0], canvas); - }, + wlxmlNode.contents().forEach((function(node) { + container.append(DocumentElement.create(node).dom()); + }).bind(this)); - fromHTMLElement: function(htmlElement, canvas) { - return new this(htmlElement, canvas); + return dom; } + }); var manipulate = function(e, params, action) { @@ -478,14 +476,14 @@ var DocumentTextElement = function(htmlElement, canvas) { }; $.extend(DocumentTextElement, { - createDOM: function(params) { + createDOM: function(wlxmlTextNode) { return $('
') .attr('document-text-element', '') - .text(params.text || utils.unicode.ZWS); + .text(wlxmlTextNode.getText() || utils.unicode.ZWS); }, - create: function(params, canvas) { - return this.fromHTMLElement(this.createDOM(params)[0]); + create: function(wlxmlTextNode, canvas) { + return this.fromHTMLElement(this.createDOM(wlxmlTextNode)[0]); }, fromHTMLElement: function(htmlElement, canvas) {