+ observer.observe(this.node.find('#rng-visualEditor-contentWrapper')[0], config);\r
+ \r
+ this.gridToggled = false;
+ },\r
+ _createNode: function(wlxmlTag, wlxmlClass) {\r
+ var toBlock = ['div', 'document', 'section', 'header'];\r
+ var htmlTag = _.contains(toBlock, wlxmlTag) ? 'div' : 'span';\r
+ var toret = $('<' + htmlTag + '>');\r
+ toret.attr('wlxml-tag', wlxmlTag);\r
+ if(wlxmlClass)\r
+ toret.attr('wlxml-class', wlxmlClass);\r
+ return toret;\r
+ },\r
+ insertNewNode: function(wlxmlTag, wlxmlClass) {\r
+ //TODO: Insert inline\r
+ var anchor = $(window.getSelection().anchorNode);\r
+ if(anchor[0].nodeType === Node.TEXT_NODE)\r
+ anchor = anchor.parent();\r
+ if(anchor.text() === '') {\r
+ var todel = anchor;\r
+ anchor = anchor.parent();\r
+ todel.remove();\r
+ }\r
+ var newNode = this._createNode(wlxmlTag || anchor.attr('wlxml-tag'), wlxmlClass || anchor.attr('wlxml-class'));\r
+ anchor.after(newNode);\r
+ mediator.nodeCreated(newNode);\r
+ isDirty = true;\r
+ },\r
+ wrapSelectionWithNewNode: function(wlxmlTag, wlxmlClass) {\r
+ \r
+ var selection = window.getSelection();\r
+ if(selection.anchorNode === selection.focusNode && selection.anchorNode.nodeType === Node.TEXT_NODE) {\r
+ var startOffset = selection.anchorOffset;\r
+ var endOffset = selection.focusOffset;\r
+ if(startOffset > endOffset) {\r
+ var tmp = startOffset;\r
+ startOffset = endOffset;\r
+ endOffset = tmp;\r
+ }\r
+ var node = selection.anchorNode;\r
+ var prefix = node.data.substr(0, startOffset);\r
+ var suffix = node.data.substr(endOffset);\r
+ var core = node.data.substr(startOffset, endOffset - startOffset);\r
+ var newNode = this._createNode(wlxmlTag, wlxmlClass);\r
+ newNode.text(core);\r
+ $(node).replaceWith(newNode);\r
+ newNode.before(prefix);\r
+ newNode.after(suffix);\r
+ mediator.nodeCreated(newNode);\r
+ isDirty = true;\r
+ }\r