X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/808306985627fd87f75a1b61fbd2d2b0fa61b186..69df3ab4cbe3d3650e99b819b2ffbddb75dbdbc2:/modules/documentCanvas/canvas/canvas.js?ds=sidebyside diff --git a/modules/documentCanvas/canvas/canvas.js b/modules/documentCanvas/canvas/canvas.js index 27f752d..318a22f 100644 --- a/modules/documentCanvas/canvas/canvas.js +++ b/modules/documentCanvas/canvas/canvas.js @@ -146,7 +146,13 @@ $.extend(Canvas.prototype, { var cursor = canvas.getCursor(); if(!cursor.isSelecting()) { var position = cursor.getPosition(), - elements = position.element.split({offset: position.offset}), + element = position.element; + + if(!(element.parent().parent())) { + return false; // top level element is unsplittable + } + + var elements = position.element.split({offset: position.offset}), newEmpty, goto; @@ -319,6 +325,42 @@ $.extend(Canvas.prototype, { wrapperElement.after({text: suffixOutside}); return wrapperElement; }, + + wrapElements: function(params) { + if(!(params.element1.parent().sameNode(params.element2.parent()))) + return; + + var parent = params.element1.parent(), + parentChildren = parent.children(), + wrapper = documentElement.DocumentNodeElement.create({ + tag: params._with.tag, + klass: params._with.klass}), + idx1 = parent.childIndex(params.element1), + idx2 = parent.childIndex(params.element2); + + if(idx1 > idx2) { + var tmp = idx1; + idx1 = idx2; + idx2 = tmp; + } + + var insertingMethod, insertingTarget; + if(idx1 === 0) { + insertingMethod = 'prepend'; + insertingTarget = parent; + } else { + insertingMethod = 'after'; + insertingTarget = parentChildren[idx1-1]; + } + + for(var i = idx1; i <= idx2; i++) { + wrapper.append(parentChildren[i].detach()); + } + + insertingTarget[insertingMethod](wrapper); + return wrapper; + }, + getSiblingParents: function(params) { var parents1 = [params.element1].concat(params.element1.parents()).reverse(), parents2 = [params.element2].concat(params.element2.parents()).reverse(),