Files
Orchard/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.min.js

2 lines
15 KiB
JavaScript

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<this.elements.length;i++){var e=this.elements[i],n=e.toObject();t.children.push(n)}return t}}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Element=function(t,i,e,n,o,s,h){if(!t)throw new Error("Parameter 'type' is required.");var r=this;this.type=t,this.data=i,this.htmlId=e,this.htmlClass=n,this.htmlStyle=o,this.isTemplated=s,this.rule=h,this.templateStyles={},this.editor=null,this.parent=null,this.setIsFocusedEventHandlers=[],this.setEditor=function(t){this.editor=t,this.children&&_.isArray(this.children)&&_(this.children).each(function(i){i.setEditor(t)})},this.setParent=function(t){this.parent=t,this.parent.onChildAdded(this);for(var i=t;i;)i.onDescendantAdded(this,t),i=i.parent},this.setIsTemplated=function(t){this.isTemplated=t,this.children&&_.isArray(this.children)&&_(this.children).each(function(i){i.setIsTemplated(t)})},this.applyElementEditorModel=function(){},this.getIsActive=function(){return!!this.editor&&(this.editor.activeElement===this&&!this.getIsFocused())},this.setIsActive=function(t){this.editor&&(this.editor.isDragging||this.editor.isResizing||(t?this.editor.activeElement=this:this.editor.activeElement=this.parent))},this.getIsFocused=function(){return!!this.editor&&this.editor.focusedElement===this},this.setIsFocused=function(){this.editor&&(!this.children&&this.isTemplated||this.editor.isDragging||this.editor.isResizing||(this.editor.focusedElement=this,_(this.setIsFocusedEventHandlers).each(function(t){try{t()}catch(t){}})))},this.getIsSelected=function(){return!!this.getIsFocused()||!(!this.children||!_.isArray(this.children))&&_(this.children).any(function(t){return t.getIsSelected()})},this.getIsDropTarget=function(){return!!this.editor&&this.editor.dropTargetElement===this},this.setIsDropTarget=function(t){this.editor&&(t?this.editor.dropTargetElement=this:this.editor.dropTargetElement=null)},this.canDelete=function(){return!(this.isTemplated||!this.parent)},this.delete=function(){this.canDelete()&&this.parent.deleteChild(this)},this.canMoveUp=function(){return!(this.isTemplated||!this.parent)&&this.parent.canMoveChildUp(this)},this.moveUp=function(){this.canMoveUp()&&this.parent.moveChildUp(this)},this.canMoveDown=function(){return!(this.isTemplated||!this.parent)&&this.parent.canMoveChildDown(this)},this.moveDown=function(){this.canMoveDown()&&this.parent.moveChildDown(this)},this.elementToObject=function(){return{type:this.type,data:this.data,htmlId:this.htmlId,htmlClass:this.htmlClass,htmlStyle:this.htmlStyle,isTemplated:this.isTemplated,rule:this.rule,contentType:this.contentType,hasEditor:this.hasEditor}},this.getEditorObject=function(){return{}},this.toObject=function(){return r.elementToObject()},this.copy=function(t){var i=this.getInnerText();t.setData("text/plain",i);var e=this.toObject(),n=JSON.stringify(e,null,"\t");t.setData("text/json",n)},this.cut=function(t){this.canDelete()&&(this.copy(t),this.delete())},this.paste=function(t){this.parent&&this.parent.paste(t)},this.getTemplateStyles=function(){var t=this.templateStyles||{},i="";for(var e in t)i+=e+":"+t[e]+";";return i}}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Container=function(i,e){this.allowedChildTypes=i,this.children=e,this.isContainer=!0,this.containerTemplateStyles={};var n=this;this.onChildAdded=function(t){},this.onDescendantAdded=function(t,i){},this.setChildren=function(t){this.children=t,_(this.children).each(function(t){t.setParent(n)})},this.setChildren(e),this.getIsSealed=function(){return _(this.children).any(function(t){return t.isTemplated})};var o=this.setIsFocused;this.setIsFocused=function(){this.getIsSealed()||o.call(this)},this.addChild=function(t){_(this.children).contains(t)||!_(this.allowedChildTypes).contains(t.type)&&!t.isContainable||this.children.push(t),t.setEditor(this.editor),t.setIsTemplated(!1),t.setParent(this)},this.deleteChild=function(t){var i=_(this.children).indexOf(t);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);i<this.children.length-1&&this.children[i+1].setIsFocused()}},this.insertChild=function(t,i){if(!_(this.children).contains(t)){var e=Math.max(_(this.children).indexOf(i),0);this.children.splice(e+1,0,t),t.setEditor(this.editor),t.parent=this}},this.moveChildUp=function(t){if(this.canMoveChildUp(t)){var i=_(this.children).indexOf(t);this.children.move(i,i-1),$.event.trigger({type:"layouteditor:edited"})}},this.moveChildDown=function(t){if(this.canMoveChildDown(t)){var i=_(this.children).indexOf(t);this.children.move(i,i+1),$.event.trigger({type:"layouteditor:edited"})}},this.canMoveChildUp=function(t){var i=_(this.children).indexOf(t);return i>0},this.canMoveChildDown=function(t){var i=_(this.children).indexOf(t);return i<this.children.length-1},this.childrenToObject=function(){return _(this.children).map(function(t){return t.toObject()})},this.getInnerText=function(){return _(this.children).reduce(function(t,i){return t+"\n"+i.getInnerText()},"")},this.paste=function(i){var e=i.getData("text/json");if(e){var n=JSON.parse(e),o=t.elementFrom(n);this.pasteChild(o)}},this.pasteChild=function(t){_(this.allowedChildTypes).contains(t.type)||t.isContainable?(this.addChild(t),t.setIsFocused()):this.parent&&this.parent.pasteChild(t)},this.getContainerTemplateStyles=function(){var t=this.containerTemplateStyles||{},i="";for(var e in t)i+=e+":"+t[e]+";";return i}}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Canvas=function(i,e,n,o,s,h,r){t.Element.call(this,"Canvas",i,e,n,o,s,h),t.Container.call(this,["Canvas","Grid","Content"],r),this.isContainable=!0,this.toObject=function(){var t=this.elementToObject();return t.children=this.childrenToObject(),t}},t.Canvas.from=function(i){var e=new t.Canvas(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.Grid=function(i,e,n,o,s,h,r){t.Element.call(this,"Grid",i,e,n,o,s,h),t.Container.call(this,["Row"],r),this.toObject=function(){var t=this.elementToObject();return t.children=this.childrenToObject(),t}},t.Grid.from=function(i){var e=new t.Grid(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.Row=function(e,n,o,s,h,r,l){function a(){return _(d.children).reduce(function(t,i){return t+i.offset+i.width},0)}function c(t){function e(t){return n>0?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;i<d.children.length&&n<0;i++){var s=d.children[i];s.offset>0&&(s.offset--,n++)}for(;0!=n&&_(d.children).any(e);)for(i=0;i<d.children.length&&0!=n;i++){var s=d.children[i%d.children.length];if(e(s)){var h=n/Math.abs(n);s.width+=h,n-=h}}return 0==n}t.Element.call(this,"Row",e,n,o,s,h,r),t.Container.call(this,["Column"],l);var d=this,u=!1;this.canAddColumn=function(){return this.children.length<12},this.beginAddColumn=function(t){if(u)throw new Error("Column add operation is already in progress.");return _(this.children).each(function(t){t.beginChange()}),c(-t)?(u=!0,!0):(_(this.children).each(function(t){t.rollbackChange()}),!1)},this.commitAddColumn=function(){if(!u)throw new Error("No column add operation in progress.");_(this.children).each(function(t){t.commitChange()}),u=!1},this.rollbackAddColumn=function(){if(!u)throw new Error("No column add operation in progress.");_(this.children).each(function(t){t.rollbackChange()}),u=!1};var f=this.deleteChild;this.deleteChild=function(t){var i=t.width;f.call(this,t),c(i)},this.canContractColumnRight=function(t,i){var e=_(this.children).indexOf(t);return e>=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("<div>"+this.html+"</div>")).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={}));