var LayoutEditor;!function(t){Array.prototype.move=function(t,i){this.splice(i,0,this.splice(t,1)[0])},t.childrenFrom=function(i){return _(i).map(function(i){return t.elementFrom(i)})};var i=t.registerFactory=function(i,e){var n=t.factories=t.factories||{};n[i]=e};i("Canvas",function(i){return t.Canvas.from(i)}),i("Grid",function(i){return t.Grid.from(i)}),i("Row",function(i){return t.Row.from(i)}),i("Column",function(i){return t.Column.from(i)}),i("Content",function(i){return t.Content.from(i)}),t.elementFrom=function(i){var e=t.factories[i.type];if(!e)throw new Error('No element with type "'+i.type+'" was found.');var n=e(i);return n},t.setModel=function(t,i){$(t).scope().element=i},t.getModel=function(t){return $(t).scope().element}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Editor=function(i,e){this.config=i,this.canvas=t.Canvas.from(e),this.initialState=JSON.stringify(this.canvas.toObject()),this.activeElement=null,this.focusedElement=null,this.dropTargetElement=null,this.isDragging=!1,this.isResizing=!1,this.recycleBin=new t.RecycleBin,this.resetToolboxElements=function(){this.toolboxElements=[t.Row.from({children:[]})]},this.isDirty=function(){var t=JSON.stringify(this.canvas.toObject());return this.initialState!=t},this.resetToolboxElements(),this.canvas.setEditor(this)}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.RecycleBin=function(){this.elements=[],this.add=function(t){this.elements.push(t)},this.toObject=function(){for(var t={type:"RecycleBin",children:[]},i=0;i=0&&(this.children.splice(i,1),this.editor.recycleBin.add(t),t.getIsActive()&&(this.editor.activeElement=null),t.getIsFocused()&&(this.children.length>i?this.children[i].setIsFocused():i>0?this.children[i-1].setIsFocused():this.setIsFocused()))},this.moveFocusPrevChild=function(t){if(!(this.children.length<2)){var i=_(this.children).indexOf(t);i>0&&this.children[i-1].setIsFocused()}},this.moveFocusNextChild=function(t){if(!(this.children.length<2)){var i=_(this.children).indexOf(t);i0},this.canMoveChildDown=function(t){var i=_(this.children).indexOf(t);return i0?t.width<12:n<0&&t.width>1}if(0==t)return!0;var n=t;if(n<0){var o=12-a();n+=o,n>0&&(n=0)}for(;n<0&&_(d.children).any(function(t){return t.offset>0});)for(i=0;i0&&(s.offset--,n++)}for(;0!=n&&_(d.children).any(e);)for(i=0;i=0&&t.width>1},this.contractColumnRight=function(t,i){if(this.canContractColumnRight(t,i)){var e=_(this.children).indexOf(t);if(e>=0&&t.width>1&&(t.width--,this.children.length>e+1)){var n=this.children[e+1];i&&0==n.offset?n.width++:n.offset++}}},this.canExpandColumnRight=function(t,i){var e=_(this.children).indexOf(t);if(e>=0){if(t.width>=12)return!1;if(this.children.length>e+1){var n=this.children[e+1];return i&&0==n.offset?n.width>1:n.offset>0}return a()<12}return!1},this.expandColumnRight=function(t,i){if(this.canExpandColumnRight(t,i)){var e=_(this.children).indexOf(t);if(e>=0){if(this.children.length>e+1){var n=this.children[e+1];i&&0==n.offset?n.width--:n.offset--}t.width++}}},this.canExpandColumnLeft=function(t,i){var e=_(this.children).indexOf(t);if(e>=0){if(t.width>=12)return!1;if(e>0){var n=this.children[e-1];if(i&&0==t.offset)return n.width>1}return t.offset>0}return!1},this.expandColumnLeft=function(t,i){if(this.canExpandColumnLeft(t,i)){var e=_(this.children).indexOf(t);if(e>=0){if(e>0){var n=this.children[e-1];i&&0==t.offset?n.width--:t.offset--}else t.offset--;t.width++}}},this.canContractColumnLeft=function(t,i){var e=_(this.children).indexOf(t);return e>=0&&t.width>1},this.contractColumnLeft=function(t,i){if(this.canContractColumnLeft(t,i)){var e=_(this.children).indexOf(t);if(e>=0){if(e>0){var n=this.children[e-1];i&&0==t.offset?n.width++:t.offset++}else t.offset++;t.width--}}},this.evenColumns=function(){if(0!=this.children.length){var t=Math.floor(12/this.children.length);_(this.children).each(function(i){i.width=t,i.offset=0});var i=12%this.children.length;i>0&&c(i)}};var m=this.pasteChild;this.pasteChild=function(t){"Column"==t.type?this.beginAddColumn(t.width)&&(this.commitAddColumn(),m.call(this,t)):this.parent&&this.parent.pasteChild(t)},this.toObject=function(){var t=this.elementToObject();return t.children=this.childrenToObject(),t}},t.Row.from=function(i){var e=new t.Row(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,i.rule,t.childrenFrom(i.children));return e.toolboxIcon=i.toolboxIcon,e.toolboxLabel=i.toolboxLabel,e.toolboxDescription=i.toolboxDescription,e}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Column=function(i,e,n,o,s,h,r,l,a,c){t.Element.call(this,"Column",i,e,n,o,s,a),t.Container.call(this,["Grid","Content"],c),this.width=h,this.offset=r,this.collapsible=l;var d=!1,u=0,f=0;this.beginChange=function(){if(d)throw new Error("Column already has a pending change.");d=!0,u=this.width,f=this.offset},this.commitChange=function(){if(!d)throw new Error("Column has no pending change.");u=0,f=0,d=!1},this.rollbackChange=function(){if(!d)throw new Error("Column has no pending change.");this.width=u,this.offset=f,u=0,f=0,d=!1},this.canSplit=function(){return!this.isTemplated&&this.width>1},this.split=function(){if(this.canSplit()){var i=Math.floor(this.width/2),e=t.Column.from({data:null,htmlId:null,htmlClass:null,htmlStyle:null,width:i,offset:0,children:[]});this.width=this.width-i,this.parent.insertChild(e,this),e.setIsFocused()}},this.canContractRight=function(t){return!this.isTemplated&&this.parent.canContractColumnRight(this,t)},this.contractRight=function(t){this.canContractRight(t)&&this.parent.contractColumnRight(this,t)},this.canExpandRight=function(t){return!this.isTemplated&&this.parent.canExpandColumnRight(this,t)},this.expandRight=function(t){this.canExpandRight(t)&&this.parent.expandColumnRight(this,t)},this.canExpandLeft=function(t){return!this.isTemplated&&this.parent.canExpandColumnLeft(this,t)},this.expandLeft=function(t){this.canExpandLeft(t)&&this.parent.expandColumnLeft(this,t)},this.canContractLeft=function(t){return!this.isTemplated&&this.parent.canContractColumnLeft(this,t)},this.contractLeft=function(t){this.canContractLeft(t)&&this.parent.contractColumnLeft(this,t)},this.toObject=function(){var t=this.elementToObject();return t.width=this.width,t.offset=this.offset,t.collapsible=this.collapsible,t.children=this.childrenToObject(),t}},t.Column.from=function(i){var e=new t.Column(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,i.width,i.offset,i.collapsible,i.rule,t.childrenFrom(i.children));return e.toolboxIcon=i.toolboxIcon,e.toolboxLabel=i.toolboxLabel,e.toolboxDescription=i.toolboxDescription,e},t.Column.times=function(i){return _.times(i,function(e){return t.Column.from({data:null,htmlId:null,htmlClass:null,isTemplated:!1,width:12/i,offset:0,collapsible:null,children:[]})})}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Content=function(i,e,n,o,s,h,r,l,a,c,d){t.Element.call(this,"Content",i,e,n,o,s,d),this.contentType=h,this.contentTypeLabel=r,this.contentTypeClass=l,this.html=a,this.hasEditor=c,this.getInnerText=function(){return $($.parseHTML("
"+this.html+"
")).text()},this.setHtml=function(t){this.html=t,this.htmlUnsafe=t};var u=this.toObject;this.toObject=function(){var t=u();return t.contentTypeLabel=this.contentTypeLabel,t.contentTypeClass=this.contentTypeClass,t.html=this.html,t},this.setHtml(a)},t.Content.from=function(i){var e=new t.Content(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,i.contentType,i.contentTypeLabel,i.contentTypeClass,i.html,i.hasEditor,i.rule);return e}}(LayoutEditor||(LayoutEditor={}));