X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/6651adb0f9bd9b0c5c83047a3b66f66e1cc7fc57..6ec6461eaba0dfa50a065dac18eb7cc6455cb827:/modules/documentCanvas/canvas/canvas.js diff --git a/modules/documentCanvas/canvas/canvas.js b/modules/documentCanvas/canvas/canvas.js index eb4e152..ad294b8 100644 --- a/modules/documentCanvas/canvas/canvas.js +++ b/modules/documentCanvas/canvas/canvas.js @@ -115,6 +115,11 @@ $.extend(Canvas.prototype, { wrapperElement.after({text: suffixOutside}); return wrapperElement; }, + getDocumentElement: function(from) { + if(from instanceof HTMLElement) { + return documentElement.wrap(from, this); + } + }, list: {} }); @@ -135,7 +140,8 @@ $.extend(Canvas.prototype.list, { var place = 'before'; var canvas = this; - parent.children().forEach(function(element) { + parent.children().some(function(element) { + var _e = element; if(element.sameNode(params.element1)) place = 'inside'; if(place === 'inside') { @@ -147,15 +153,15 @@ $.extend(Canvas.prototype.list, { element.setWlxmlClass('item'); elementsToWrap.push(element); } - if(element.sameNode(params.element2)) - return false; + if(_e.sameNode(params.element2)) + return true; }); var listElement = documentElement.DocumentNodeElement.create({tag: 'div', klass: 'list-items' + (params.type === 'enum' ? '-enum' : '')}); var toret; if(parent.is('list')) { - listElement.wrap({tag: 'div', klass: 'item'}); + listElement.wrapWithNodeElement({tag: 'div', klass: 'item'}); toret = listElement.parent(); } else { toret = listElement; @@ -169,6 +175,7 @@ $.extend(Canvas.prototype.list, { }); }, extractItems: function(params) { + params = _.extend({merge: true}, params); var list = params.element1.parent(); if(!list.is('list') || !(list.sameNode(params.element2.parent()))) return false; @@ -198,32 +205,28 @@ $.extend(Canvas.prototype.list, { }); var reference = listIsNested ? list.parent() : list; - if(precedingItems.length === 0 && succeedingItems.length === 0) { - extractedItems.forEach(function(item) { - reference.after(item); - if(!listIsNested) - item.setWlxmlClass(null); - }); - reference.detach(); - } else if(precedingItems.length > 0 && succeedingItems.length === 0) { + if(succeedingItems.length === 0) { + var reference_orig = reference; extractedItems.forEach(function(item) { reference.after(item); + reference = item; if(!listIsNested) item.setWlxmlClass(null); }); - } else if(precedingItems.length === 0 && succeedingItems.length > 0) { + if(precedingItems.length === 0) + reference_orig.detach(); + } else if(precedingItems.length === 0) { extractedItems.forEach(function(item) { reference.before(item); if(!listIsNested) item.setWlxmlClass(null); }); } else { - var ptr = reference; extractedItems.forEach(function(item) { - ptr.after(item); + reference.after(item); if(!listIsNested) item.setWlxmlClass(null); - ptr = item; + reference = item; }); var secondList = documentElement.DocumentNodeElement.create({tag: 'div', klass:'list-items'}, this), toAdd = secondList; @@ -235,8 +238,18 @@ $.extend(Canvas.prototype.list, { secondList.append(item); }); - ptr.after(toAdd); + reference.after(toAdd); } + if(!params.merge && listIsNested) { + return this.extractItems({element1: extractedItems[0], element2: extractedItems[extractedItems.length-1]}); + } + return true; + }, + areItemsOfTheSameList: function(params) { + var e1 = params.element1, + e2 = params.element2; + return e1.parent().sameNode(e2.parent()) + && e1.parent().is('list'); } });