!function(t){var e={config:{},container:{},controls:{},errors:{},items:{},utils:{}};e.utils.F=function(){},e.utils.extend=function(t,i){t.prototype=e.utils.createObject(i.prototype),t.prototype.contructor=t},e.utils.createObject=function(t){return"function"==typeof Object.create?Object.create(t):(e.utils.F.prototype=t,new e.utils.F)},e.utils.objectKeys=function(t){var e,i;if("function"==typeof Object.keys)return Object.keys(t);e=[];for(i in t)e.push(i);return e},e.utils.getHashValue=function(t){var e=location.hash.match(new RegExp(t+"=([^&]*)"));return e?e[1]:null},e.utils.getQueryStringParam=function(t){if(window.location.hash)return e.utils.getHashValue(t);if(!window.location.search)return null;var i,n,s=window.location.search.substr(1).split("&"),o={};for(n=0;n/g,">").replace(/]+)>)/gi,""))},e.utils.EventEmitter=function(){this._mSubscriptions={},this._mSubscriptions[e.utils.EventEmitter.ALL_EVENT]=[],this.on=function(t,i,n){if(!e.utils.isFunction(i))throw new Error("Tried to listen to event "+t+" with non-function callback "+i);this._mSubscriptions[t]||(this._mSubscriptions[t]=[]),this._mSubscriptions[t].push({fn:i,ctx:n})},this.emit=function(t){var i,n,s;s=Array.prototype.slice.call(arguments,1);var o=this._mSubscriptions[t];if(o)for(o=o.slice(),i=0;ithis._nDistance||Math.abs(this._nY)>this._nDistance)&&(clearTimeout(this._timeout),this._startDrag()),this._bDragging&&this.emit("drag",this._nX,this._nY,t)}},onMouseUp:function(t){null!=this._timeout&&(clearTimeout(this._timeout),this._eBody.removeClass("lm_dragging"),this._eElement.removeClass("lm_dragging"),this._oDocument.find("iframe").css("pointer-events",""),this._oDocument.unbind("mousemove touchmove",this._fMove),this._oDocument.unbind("mouseup touchend",this._fUp),this._bDragging===!0&&(this._bDragging=!1,this.emit("dragStop",t,this._nOriginalX+this._nX)))},_startDrag:function(){this._bDragging=!0,this._eBody.addClass("lm_dragging"),this._eElement.addClass("lm_dragging"),this._oDocument.find("iframe").css("pointer-events","none"),this.emit("dragStart",this._nOriginalX,this._nOriginalY)},_getCoordinates:function(t){return t=t.originalEvent&&t.originalEvent.touches?t.originalEvent.touches[0]:t,{x:t.pageX,y:t.pageY}}}),e.LayoutManager=function(i,n){if(!t||"function"!=typeof t.noConflict){var s="jQuery is missing as dependency for GoldenLayout. ";throw s+='Please either expose $ on GoldenLayout\'s scope (e.g. window) or add "jquery" to ',s+="your paths when using RequireJS/AMD",new Error(s)}e.utils.EventEmitter.call(this),this.isInitialised=!1,this._isFullPage=!1,this._resizeTimeoutId=null,this._components={"lm-react-component":e.utils.ReactComponentHandler},this._itemAreas=[],this._resizeFunction=e.utils.fnBind(this._onResize,this),this._unloadFunction=e.utils.fnBind(this._onUnload,this),this._maximisedItem=null,this._maximisePlaceholder=t('
'),this._creationTimeoutPassed=!1,this._subWindowsCreated=!1,this._dragSources=[],this._updatingColumnsResponsive=!1,this._firstLoad=!0,this.width=null,this.height=null,this.root=null,this.openPopouts=[],this.selectedItem=null,this.isSubWindow=!1,this.eventHub=new e.utils.EventHub(this),this.config=this._createConfig(i),this.container=n,this.dropTargetIndicator=null,this.transitionIndicator=null,this.tabDropPlaceholder=t('
'),this.isSubWindow===!0&&t("body").css("visibility","hidden"),this._typeToItem={column:e.utils.fnBind(e.items.RowOrColumn,this,[!0]),row:e.utils.fnBind(e.items.RowOrColumn,this,[!1]),stack:e.items.Stack,component:e.items.Component}},e.LayoutManager.__lm=e,e.LayoutManager.minifyConfig=function(t){return(new e.utils.ConfigMinifier).minifyConfig(t)},e.LayoutManager.unminifyConfig=function(t){return(new e.utils.ConfigMinifier).unminifyConfig(t)},e.utils.copy(e.LayoutManager.prototype,{registerComponent:function(t,e){if("function"!=typeof e)throw new Error("Please register a constructor function");if(void 0!==this._components[t])throw new Error("Component "+t+" is already registered");this._components[t]=e},toConfig:function(t){var i,n,s;if(this.isInitialised===!1)throw new Error("Can't create config, layout not yet initialised");if(t&&!(t instanceof e.items.AbstractContentItem))throw new Error("Root must be a ContentItem");for(i={settings:e.utils.copy({},this.config.settings),dimensions:e.utils.copy({},this.config.dimensions),labels:e.utils.copy({},this.config.labels)},i.content=[],n=function(t,e){var i,s;for(i in e.config)"content"!==i&&(t[i]=e.config[i]);if(e.contentItems.length)for(t.content=[],s=0;sn.x1&&tn.y1&&en.surface&&(s=n.surface,o=n);return o},_$createRootItemAreas:function(){var t=50,e={y2:0,x2:0,y1:"y2",x1:"x2"};for(var i in e){var n=this.root._$getArea();n.side=i,e[i]?n[i]=n[e[i]]-t:n[i]=t,n.surface=(n.x2-n.x1)*(n.y2-n.y1),this._itemAreas.push(n)}},_$calculateItemAreas:function(){var t,i,n=this._getAllContentItems();if(this._itemAreas=[],1===n.length)return void this._itemAreas.push(this.root._$getArea());for(this._$createRootItemAreas(),t=0;t
');i.click(e.utils.fnBind(function(){this.emit("popIn")},this)),document.title=e.utils.stripTags(this.config.content[0].title),t("head").append(t("body link, body style, template, .gl_keep")),this.container=t("body").html("").css("visibility","visible").append(i);document.body.offsetHeight;window.__glInstance=this},_createSubWindows:function(){var t,e;for(t=0;t1)throw new Error("GoldenLayout more than one container element specified");e[0]===document.body&&(this._isFullPage=!0,t("html, body").css({height:"100%",margin:0,padding:0,overflow:"hidden"})),this.container=e},_create:function(t){var i;if(!(t.content instanceof Array))throw i=void 0===t.content?"Missing setting 'content' on top level of configuration":"Configuration parameter 'content' must be an array",new e.errors.ConfigurationError(i,t);if(t.content.length>1)throw i="Top level content can't contain more then one element.",new e.errors.ConfigurationError(i,t);this.root=new e.items.Root(this,{content:t.content},this.container),this.root.callDownwards("_$init"),"__glMaximised"===t.maximisedItemId&&this.root.getItemsById(t.maximisedItemId)[0].toggleMaximise()},_onUnload:function(){if(this.config.settings.closePopoutsOnUnload===!0)for(var t=0;t','
',""].join("")),this._contentElement=this._element.find(".lm_content")},e.utils.copy(e.container.ItemContainer.prototype,{getElement:function(){return this._contentElement},hide:function(){this.emit("hide"),this.isHidden=!0,this._element.hide()},show:function(){this.emit("show"),this.isHidden=!1,this._element.show(),0==this.height&&0==this.width||this.emit("shown")},setSize:function(t,e){for(var i,n,s,o,r,a,h=this.parent,l=this;!h.isColumn&&!h.isRow;)if(l=h,h=h.parent,h.isRoot)return!1;for(s=h.isColumn?"height":"width",o="height"===s?e:t,i=this[s]*(1/(l.config[s]/100)),n=o/i*100,r=(l.config[s]-n)/(h.contentItems.length-1),a=0;a0?this._layoutManager.root.contentItems[0]:this._layoutManager.root,n=0)),i.addChild(e,this._indexInParent),this.close()},_createWindow:function(){var i,n=this._createUrl(),s=Math.floor(1e6*Math.random()).toString(36),o=this._serializeWindowOptions({width:this._dimensions.width,height:this._dimensions.height,innerWidth:this._dimensions.width,innerHeight:this._dimensions.height,menubar:"no",toolbar:"no",location:"no",personalbar:"no",resizable:"yes",scrollbars:"no",status:"no"});if(this._popoutWindow=window.open(n,s,o),this._popoutWindow)t(this._popoutWindow).on("load",e.utils.fnBind(this._positionWindow,this)).on("unload beforeunload",e.utils.fnBind(this._onClose,this)),i=setInterval(e.utils.fnBind(function(){this._popoutWindow.__glInstance&&this._popoutWindow.__glInstance.isInitialised&&(this._onInitialised(),clearInterval(i))},this),10);else if(this._layoutManager.config.settings.blockedPopoutsThrowError===!0){var r=new Error("Popout blocked");throw r.type="popoutBlocked",r}},_serializeWindowOptions:function(t){var e,i=[];for(e in t)i.push(e+"="+t[e]);return i.join(",")},_createUrl:function(){var t,i={content:this._config},n="gl-window-config-"+e.utils.getUniqueId();i=(new e.utils.ConfigMinifier).minifyConfig(i);try{localStorage.setItem(n,JSON.stringify(i))}catch(s){throw new Error("Error while writing to localStorage "+s.toString())}return t=document.location.href.split("?"),1===t.length?t[0]+"?gl-window="+n:document.location.href+"&gl-window="+n},_positionWindow:function(){this._popoutWindow.moveTo(this._dimensions.left,this._dimensions.top),this._popoutWindow.focus()},_onInitialised:function(){this.isInitialised=!0,this.getGlInstance().on("popIn",this.popIn,this),this.emit("initialised")},_onClose:function(){setTimeout(e.utils.fnBind(this.emit,this,["closed"]),50)}}),e.controls.DragProxy=function(i,n,s,o,r,a){e.utils.EventEmitter.call(this),this._dragListener=s,this._layoutManager=o,this._contentItem=r,this._originalParent=a,this._area=null,this._lastValidArea=null,this._dragListener.on("drag",this._onDrag,this),this._dragListener.on("dragStop",this._onDrop,this),this.element=t(e.controls.DragProxy._template),a&&a._side&&(this._sided=a._sided,this.element.addClass("lm_"+a._side),["right","bottom"].indexOf(a._side)>=0&&this.element.find(".lm_content").after(this.element.find(".lm_header"))),this.element.css({left:i,top:n}),this.element.find(".lm_tab").attr("title",e.utils.stripTags(this._contentItem.config.title)),this.element.find(".lm_title").html(this._contentItem.config.title),this.childElementContainer=this.element.find(".lm_content"),this.childElementContainer.append(r.element),this._updateTree(),this._layoutManager._$calculateItemAreas(),this._setDimensions(),t(document.body).append(this.element);var h=this._layoutManager.container.offset();this._minX=h.left,this._minY=h.top,this._maxX=this._layoutManager.container.width()+this._minX,this._maxY=this._layoutManager.container.height()+this._minY,this._width=this.element.width(),this._height=this.element.height(),this._setDropPosition(i,n)},e.controls.DragProxy._template='
',e.utils.copy(e.controls.DragProxy.prototype,{_onDrag:function(t,e,i){i=i.originalEvent&&i.originalEvent.touches?i.originalEvent.touches[0]:i;var n=i.pageX,s=i.pageY,o=n>this._minX&&nthis._minY&&s
',e.utils.copy(e.controls.DropTargetIndicator.prototype,{destroy:function(){this.element.remove()},highlight:function(t,e,i,n){this.highlightArea({x1:t,y1:e,x2:i,y2:n})},highlightArea:function(t){this.element.css({left:t.x1,top:t.y1,width:t.x2-t.x1,height:t.y2-t.y1}).show()},hide:function(){this.element.hide()}}),e.controls.Header=function(i,n){e.utils.EventEmitter.call(this),this.layoutManager=i,this.element=t(e.controls.Header._template),this.layoutManager.config.settings.selectionEnabled===!0&&(this.element.addClass("lm_selectable"),this.element.on("click touchstart",e.utils.fnBind(this._onHeaderClick,this))),this.tabsContainer=this.element.find(".lm_tabs"),this.tabDropdownContainer=this.element.find(".lm_tabdropdown_list"),this.tabDropdownContainer.hide(),this.controlsContainer=this.element.find(".lm_controls"),this.parent=n,this.parent.on("resize",this._updateTabSizes,this),this.tabs=[],this.activeContentItem=null,this.closeButton=null,this.tabDropdownButton=null,this.hideAdditionalTabsDropdown=e.utils.fnBind(this._hideAdditionalTabsDropdown,this),t(document).mouseup(this.hideAdditionalTabsDropdown),this._lastVisibleTabIndex=-1,this._tabControlOffset=this.layoutManager.config.settings.tabControlOffset,this._createControls()},e.controls.Header._template=['
','
    ','
      ','
        ',"
        "].join(""),e.utils.copy(e.controls.Header.prototype,{createTab:function(t,i){var n,s;for(s=0;s0?this.tabs[i-1].element.after(n.element):this.tabs[0].element.before(n.element),this.tabs.splice(i,0,n),void this._updateTabSizes())},removeTab:function(t){for(var e=0;ethis._lastVisibleTabIndex){for(s=this.tabs[this.parent.config.activeItemIndex],i=this.parent.config.activeItemIndex;i>0;i--)this.tabs[i]=this.tabs[i-1];this.tabs[0]=s,this.parent.config.activeItemIndex=0}this._updateTabSizes(),this.parent.emitBubblingEvent("stateChanged")},position:function(t){var e=this.parent._header.show;return e&&!this.parent._side&&(e="top"),void 0!==t&&this.parent._header.show!=t&&(this.parent._header.show=t,this.parent._setupHeaderPosition()),e},_$setClosable:function(t){return!(!this.closeButton||!this._isClosable())&&(this.closeButton.element[t?"show":"hide"](),!0)},_$destroy:function(){this.emit("destroy",this);for(var e=0;ea){if(m)n===u&&(i.css({"z-index":"auto","margin-left":""}),this.tabsContainer.append(i));else if(c=u>0&&u<=n?(l-a)/(n-1):(l-a)/n,c'),this._header.on("destroy",this._$destroy,this),this._action=s,this.element.on("click touchstart",this._action),this._header.controlsContainer.append(this.element)},e.utils.copy(e.controls.HeaderButton.prototype,{_$destroy:function(){this.element.off(),this.element.remove()}}),e.controls.Splitter=function(t,i,n){this._isVertical=t,this._size=i,this._grabSize=n'),i=t('
        ');i.append(e);var n=this._grabSize-this._size,s=n/2;return this._isVertical?(e.css("top",-s),e.css("height",this._size+n),i.addClass("lm_vertical"),i.height(this._size)):(e.css("left",-s),e.css("width",this._size+n),i.addClass("lm_horizontal"),i.width(this._size)),i}}),e.controls.Tab=function(i,n){this.header=i,this.contentItem=n,this.element=t(e.controls.Tab._template),this.titleElement=this.element.find(".lm_title"),this.closeElement=this.element.find(".lm_close_tab"),this.closeElement[n.config.isClosable?"show":"hide"](),this.isActive=!1,this.setTitle(n.config.title),this.contentItem.on("titleChanged",this.setTitle,this),this._layoutManager=this.contentItem.layoutManager,this._layoutManager.config.settings.reorderEnabled===!0&&n.config.reorderEnabled===!0&&(this._dragListener=new e.utils.DragListener(this.element),this._dragListener.on("dragStart",this._onDragStart,this),this.contentItem.on("destroy",this._dragListener.destroy,this._dragListener)),this._onTabClickFn=e.utils.fnBind(this._onTabClick,this),this._onCloseClickFn=e.utils.fnBind(this._onCloseClick,this),this.element.on("mousedown touchstart",this._onTabClickFn),this.contentItem.config.isClosable?(this.closeElement.on("click touchstart",this._onCloseClickFn),this.closeElement.on("mousedown",this._onCloseMousedown)):this.closeElement.remove(),this.contentItem.tab=this,this.contentItem.emit("tab",this),this.contentItem.layoutManager.emit("tabCreated",this),this.contentItem.isComponent&&(this.contentItem.container.tab=this,this.contentItem.container.emit("tab",this))},e.controls.Tab._template='
      • ',e.utils.copy(e.controls.Tab.prototype,{setTitle:function(t){this.element.attr("title",e.utils.stripTags(t)),this.titleElement.html(t)},setActive:function(t){t!==this.isActive&&(this.isActive=t,t?this.element.addClass("lm_active"):this.element.removeClass("lm_active"))},_$destroy:function(){this.element.off("mousedown touchstart",this._onTabClickFn),this.closeElement.off("click touchstart",this._onCloseClickFn),this._dragListener&&(this.contentItem.off("destroy",this._dragListener.destroy,this._dragListener),this._dragListener.off("dragStart",this._onDragStart),this._dragListener=null),this.element.remove()},_onDragStart:function(t,i){this.contentItem.parent.isMaximised===!0&&this.contentItem.parent.toggleMaximise(),new e.controls.DragProxy(t,i,this._dragListener,this._layoutManager,this.contentItem,this.header.parent)},_onTabClick:function(t){if(0===t.button||"touchstart"===t.type){var e=this.header.parent.getActiveContentItem();this.contentItem!==e&&this.header.parent.setActiveContentItem(this.contentItem)}else 1===t.button&&this.contentItem.config.isClosable&&this._onCloseClick(t)},_onCloseClick:function(t){t.stopPropagation(),this.header.parent.removeChild(this.contentItem)},_onCloseMousedown:function(t){t.stopPropagation()}}),e.controls.TransitionIndicator=function(){this._element=t('
        '),t(document.body).append(this._element),this._toElement=null,this._fromDimensions=null,this._totalAnimationDuration=200,this._animationStartTime=null},e.utils.copy(e.controls.TransitionIndicator.prototype,{destroy:function(){this._element.remove()},transitionElements:function(t,e){},_nextAnimationFrame:function(){var t,i=this._measure(this._toElement),n=(e.utils.now()-this._animationStartTime)/this._totalAnimationDuration,s={};if(n>=1)return void this._element.hide();i.opacity=0;for(t in this._fromDimensions)s[t]=this._fromDimensions[t]+(i[t]-this._fromDimensions[t])*n;this._element.css(s),e.utils.animFrame(e.utils.fnBind(this._nextAnimationFrame,this))},_measure:function(t){var e=t.offset();return{left:e.left,top:e.top,width:t.outerWidth(),height:t.outerHeight()}}}),e.errors.ConfigurationError=function(t,e){Error.call(this),this.name="Configuration Error",this.message=t,this.node=e},e.errors.ConfigurationError.prototype=new Error,e.items.AbstractContentItem=function(t,i,n){e.utils.EventEmitter.call(this),this.config=this._extendItemNode(i),this.type=i.type,this.contentItems=[],this.parent=n,this.isInitialised=!1,this.isMaximised=!1,this.isRoot=!1,this.isRow=!1,this.isColumn=!1,this.isStack=!1,this.isComponent=!1,this.layoutManager=t,this._pendingEventPropagations={},this._throttledEvents=["stateChanged"],this.on(e.utils.EventEmitter.ALL_EVENT,this._propagateEvent,this),i.content&&this._createContentItems(i)},e.utils.copy(e.items.AbstractContentItem.prototype,{setSize:function(){throw new Error("Abstract Method")},callDownwards:function(t,e,i,n){var s;for(i!==!0&&n!==!0&&this[t].apply(this,e||[]),s=0;s0?this.callDownwards("setSize"):this instanceof e.items.Root||this.config.isClosable!==!0||this.parent.removeChild(this)},addChild:function(t,e){void 0===e&&(e=this.contentItems.length),this.contentItems.splice(e,0,t),void 0===this.config.content&&(this.config.content=[]),this.config.content.splice(e,0,t.config),t.parent=this,t.parent.isInitialised===!0&&t.isInitialised===!1&&t._$init()},replaceChild:function(t,i,n){i=this.layoutManager._$normalizeContentItem(i);var s=e.utils.indexOf(t,this.contentItems),o=t.element[0].parentNode;if(s===-1)throw new Error("Can't replace child. oldChild is not child of this");o.replaceChild(i.element[0],t.element[0]),n===!0&&(t.parent=null,t._$destroy()),this.contentItems[s]=i,i.parent=this,this.isStack&&(this.header.tabs[s].contentItem=i),i.parent.isInitialised===!0&&i.isInitialised===!1&&i._$init(),this.callDownwards("setSize")},remove:function(){this.parent.removeChild(this)},popout:function(){var t=this.layoutManager.createPopout(this);return this.emitBubblingEvent("stateChanged"),t},toggleMaximise:function(t){t&&t.preventDefault(),this.isMaximised===!0?this.layoutManager._$minimiseItem(this):this.layoutManager._$maximiseItem(this),this.isMaximised=!this.isMaximised,this.emitBubblingEvent("stateChanged")},select:function(){this.layoutManager.selectedItem!==this&&(this.layoutManager.selectItem(this,!0),this.element.addClass("lm_selected"))},deselect:function(){this.layoutManager.selectedItem===this&&(this.layoutManager.selectedItem=null,this.element.removeClass("lm_selected"))},setTitle:function(t){this.config.title=t,this.emit("titleChanged",t),this.emit("stateChanged")},hasId:function(t){return!!this.config.id&&("string"==typeof this.config.id?this.config.id===t:this.config.id instanceof Array?e.utils.indexOf(t,this.config.id)!==-1:void 0)},addId:function(t){this.hasId(t)||(this.config.id?"string"==typeof this.config.id?this.config.id=[this.config.id,t]:this.config.id instanceof Array&&this.config.id.push(t):this.config.id=t)},removeId:function(t){if(!this.hasId(t))throw new Error("Id not found");if("string"==typeof this.config.id)delete this.config.id;else if(this.config.id instanceof Array){var i=e.utils.indexOf(t,this.config.id);this.config.id.splice(i,1)}},getItemsByFilter:function(t){var e=[],i=function(n){for(var s=0;s'),this.childElementContainer=this.element,this._containerElement=s,this._containerElement.append(this.element)},e.utils.extend(e.items.Root,e.items.AbstractContentItem),e.utils.copy(e.items.Root.prototype,{addChild:function(t){if(this.contentItems.length>0)throw new Error("Root node can only have a single child");t=this.layoutManager._$normalizeContentItem(t,this),this.childElementContainer.append(t.element),e.items.AbstractContentItem.prototype.addChild.call(this,t),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")},setSize:function(t,e){t="undefined"==typeof t?this._containerElement.width():t,e="undefined"==typeof e?this._containerElement.height():e,this.element.width(t),this.element.height(e),this.contentItems[0]&&(this.contentItems[0].element.width(t),this.contentItems[0].element.height(e))},_$highlightDropZone:function(t,i,n){this.layoutManager.tabDropPlaceholder.remove(),e.items.AbstractContentItem.prototype._$highlightDropZone.apply(this,arguments)},_$onDrop:function(t,i){var n;if(t.isComponent&&(n=this.layoutManager.createContentItem({type:"stack",header:t.config.header||{}},this),n._$init(),n.addChild(t),t=n),this.contentItems.length){var s="x"==i.side[0]?"row":"column",o="x"==i.side[0]?"width":"height",r="2"==i.side[1],a=this.contentItems[0];if(!a instanceof e.items.RowOrColumn||a.type!=s){var h=this.layoutManager.createContentItem({type:s},this);this.replaceChild(a,h),h.addChild(t,r?0:void 0,!0),h.addChild(a,r?void 0:0,!0),a.config[o]=50,t.config[o]=50,h.callDownwards("setSize")}else{var l=a.contentItems[r?0:a.contentItems.length-1];a.addChild(t,r?0:void 0,!0),l.config[o]*=.5,t.config[o]=l.config[o],a.callDownwards("setSize")}}else this.addChild(t)}}),e.items.RowOrColumn=function(i,n,s,o){e.items.AbstractContentItem.call(this,n,s,o),this.isRow=!i,this.isColumn=i,this.element=t('
        '),this.childElementContainer=this.element,this._splitterSize=n.config.dimensions.borderWidth,this._splitterGrabSize=n.config.dimensions.borderGrabWidth,this._isColumn=i,this._dimension=i?"height":"width",this._splitter=[],this._splitterPosition=null,this._splitterMinPosition=null,this._splitterMaxPosition=null},e.utils.extend(e.items.RowOrColumn,e.items.AbstractContentItem),e.utils.copy(e.items.RowOrColumn.prototype,{addChild:function(t,i,n){var s,o,r,a;if(t=this.layoutManager._$normalizeContentItem(t,this),void 0===i&&(i=this.contentItems.length),this.contentItems.length>0?(a=this._createSplitter(Math.max(0,i-1)).element,i>0?(this.contentItems[i-1].element.after(a),a.after(t.element)):(this.contentItems[0].element.before(a),a.before(t.element))):this.childElementContainer.append(t.element),e.items.AbstractContentItem.prototype.addChild.call(this,t,i),s=1/this.contentItems.length*100,n===!0)return void this.emitBubblingEvent("stateChanged");for(r=0;r0&&(this._calculateRelativeSizes(),this._setAbsoluteSizes()),this.emitBubblingEvent("stateChanged"),this.emit("resize")},_$init:function(){if(this.isInitialised!==!0){var t;for(e.items.AbstractContentItem.prototype._$init.call(this),t=0;t0&&e.itemSizes[t]++,this._isColumn?(this.contentItems[t].element.width(e.totalWidth),this.contentItems[t].element.height(e.itemSizes[t])):(this.contentItems[t].element.width(e.itemSizes[t]),this.contentItems[t].element.height(e.totalHeight))},_calculateAbsoluteSizes:function(){var t,e,i,n=(this.contentItems.length-1)*this._splitterSize,s=this.element.width(),o=this.element.height(),r=0,a=[];for(this._isColumn?o-=n:s-=n,t=0;t0){for(t=0;t100)for(t=0;tr)){for(t=a/r,h=a,m=0;mthis._splitterMinPosition&&n'),this._activeContentItem=null;var o=i.config;this._header={show:o.settings.hasHeaders===!0&&n.hasHeaders!==!1,popout:o.settings.showPopoutIcon&&o.labels.popout,maximise:o.settings.showMaximiseIcon&&o.labels.maximise,close:o.settings.showCloseIcon&&o.labels.close,minimise:o.labels.minimise},o.header&&e.utils.copy(this._header,o.header),n.header&&e.utils.copy(this._header,n.header),n.content&&n.content[0]&&n.content[0].header&&e.utils.copy(this._header,n.content[0].header),this._dropZones={},this._dropSegment=null,this._contentAreaDimensions=null,this._dropIndex=null,this.isStack=!0,this.childElementContainer=t('
        '),this.header=new e.controls.Header(i,this),this.element.append(this.header.element),this.element.append(this.childElementContainer),this._setupHeaderPosition(),this._$validateClosability()},e.utils.extend(e.items.Stack,e.items.AbstractContentItem),e.utils.copy(e.items.Stack.prototype,{setSize:function(){var t,e=this._header.show?this.layoutManager.config.dimensions.headerHeight:0,i=this.element.width()-(this._sided?e:0),n=this.element.height()-(this._sided?0:e);for(this.childElementContainer.width(i),this.childElementContainer.height(n),t=0;t0){if(i=this.contentItems[this.config.activeItemIndex||0],!i)throw new Error("Configured activeItemIndex out of bounds");this.setActiveContentItem(i)}}},setActiveContentItem:function(t){if(e.utils.indexOf(t,this.contentItems)===-1)throw new Error("contentItem is not a child of this stack");null!==this._activeContentItem&&this._activeContentItem._$hide(),this._activeContentItem=t,this.header.setActiveContentItem(t),t._$show(),this.emit("activeContentItemChanged",t),this.layoutManager.emit("activeContentItemChanged",t),this.emitBubblingEvent("stateChanged")},getActiveContentItem:function(){return this.header.activeContentItem},addChild:function(t,i){t=this.layoutManager._$normalizeContentItem(t,this),e.items.AbstractContentItem.prototype.addChild.call(this,t,i),this.childElementContainer.append(t.element),this.header.createTab(t,i),this.setActiveContentItem(t),this.callDownwards("setSize"),this._$validateClosability(),this.emitBubblingEvent("stateChanged")},removeChild:function(t,i){var n=e.utils.indexOf(t,this.contentItems);e.items.AbstractContentItem.prototype.removeChild.call(this,t,i),this.header.removeTab(t),this.header.activeContentItem===t&&(this.contentItems.length>0?this.setActiveContentItem(this.contentItems[Math.max(n-1,0)]):this._activeContentItem=null),this._$validateClosability(),this.emitBubblingEvent("stateChanged")},_$validateClosability:function(){var t,e,i;for(t=this.header._isClosable(),i=0,e=this.contentItems.length;it&&n.y1e)return void("header"===i?(this._dropSegment="header",this._highlightHeaderDropZone(this._sided?e:t)):(this._resetHeaderDropZone(),this._highlightBodyDropZone(i)))},_$getArea:function(){if(this.element.is(":visible")===!1)return null;var t=e.items.AbstractContentItem.prototype._$getArea,i=t.call(this,this.header.element),n=t.call(this,this.childElementContainer),s=n.x2-n.x1,o=n.y2-n.y1;return this._contentAreaDimensions={header:{hoverArea:{x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2},highlightArea:{x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2}}},this._activeContentItem&&this._activeContentItem.isComponent===!1?i:0===this.contentItems.length?(this._contentAreaDimensions.body={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2}},t.call(this,this.element)):(this._contentAreaDimensions.left={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x1+.25*s,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x1+.5*s,y2:n.y2}},this._contentAreaDimensions.top={hoverArea:{x1:n.x1+.25*s,y1:n.y1,x2:n.x1+.75*s,y2:n.y1+.5*o},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y1+.5*o}},this._contentAreaDimensions.right={hoverArea:{x1:n.x1+.75*s,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1+.5*s,y1:n.y1,x2:n.x2,y2:n.y2}},this._contentAreaDimensions.bottom={hoverArea:{x1:n.x1+.25*s,y1:n.y1+.5*o,x2:n.x1+.75*s,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1+.5*o,x2:n.x2,y2:n.y2}},t.call(this,this.element))},_highlightHeaderDropZone:function(t){var e,i,n,s,o,r,a,h,l,c=this.header.tabs.length,d=!1;if(0===c)return a=this.header.element.offset(),void this.layoutManager.dropTargetIndicator.highlightArea({x1:a.left,x2:a.left+100,y1:a.top+this.header.element.height()-20,y2:a.top+this.header.element.height()});for(e=0;es&&t=0&&this._header.show;if(this.header.element.toggle(!!this._header.show),this._side=t,this._sided=["right","left"].indexOf(this._side)>=0,this.element.removeClass("lm_left lm_right lm_bottom"),this._side&&this.element.addClass("lm_"+this._side),this.element.find(".lm_header").length&&this.childElementContainer){var e=["right","bottom"].indexOf(this._side)>=0?"before":"after";this.header.element[e](this.childElementContainer),this.callDownwards("setSize")}},_highlightBodyDropZone:function(t){var e=this._contentAreaDimensions[t].highlightArea;this.layoutManager.dropTargetIndicator.highlightArea(e),this._dropSegment=t}}),e.utils.BubblingEvent=function(t,e){this.name=t,this.origin=e,this.isPropagationStopped=!1},e.utils.BubblingEvent.prototype.stopPropagation=function(){this.isPropagationStopped=!0},e.utils.ConfigMinifier=function(){if(this._keys=["settings","hasHeaders","constrainDragToContainer","selectionEnabled","dimensions","borderWidth","minItemHeight","minItemWidth","headerHeight","dragProxyWidth","dragProxyHeight","labels","close","maximise","minimise","popout","content","componentName","componentState","id","width","type","height","isClosable","title","popoutWholeStack","openPopouts","parentId","activeItemIndex","reorderEnabled","borderGrabWidth"],this._keys.length>36)throw new Error("Too many keys in config minifier map");this._values=[!0,!1,"row","column","stack","component","close","maximise","minimise","open in new window"]},e.utils.copy(e.utils.ConfigMinifier.prototype,{ minifyConfig:function(t){var e={};return this._nextLevel(t,e,"_min"),e},unminifyConfig:function(t){var e={};return this._nextLevel(t,e,"_max"),e},_nextLevel:function(t,e,i){var n,s;for(n in t)t instanceof Array&&(n=parseInt(n,10)),t.hasOwnProperty(n)&&(s=this[i](n,this._keys),"object"==typeof t[n]?(e[s]=t[n]instanceof Array?[]:{},this._nextLevel(t[n],e[s],i)):e[s]=this[i](t[n],this._values))},_min:function(t,i){if("string"==typeof t&&1===t.length)return"___"+t;var n=e.utils.indexOf(t,i);return n===-1?t:n.toString(36)},_max:function(t,e){return"string"==typeof t&&1===t.length?e[parseInt(t,36)]:"string"==typeof t&&"___"===t.substr(0,3)?t[3]:t}}),e.utils.EventHub=function(i){e.utils.EventEmitter.call(this),this._layoutManager=i,this._dontPropagateToParent=null,this._childEventSource=null,this.on(e.utils.EventEmitter.ALL_EVENT,e.utils.fnBind(this._onEventFromThis,this)),this._boundOnEventFromChild=e.utils.fnBind(this._onEventFromChild,this),t(window).on("gl_child_event",this._boundOnEventFromChild)},e.utils.EventHub.prototype._onEventFromThis=function(){var t=Array.prototype.slice.call(arguments);this._layoutManager.isSubWindow&&t[0]!==this._dontPropagateToParent&&this._propagateToParent(t),this._propagateToChildren(t),this._dontPropagateToParent=null,this._childEventSource=null},e.utils.EventHub.prototype._$onEventFromParent=function(t){this._dontPropagateToParent=t[0],this.emit.apply(this,t)},e.utils.EventHub.prototype._onEventFromChild=function(t){this._childEventSource=t.originalEvent.__gl,this.emit.apply(this,t.originalEvent.__glArgs)},e.utils.EventHub.prototype._propagateToParent=function(t){var e,i="gl_child_event";document.createEvent?(e=window.opener.document.createEvent("HTMLEvents"),e.initEvent(i,!0,!0)):(e=window.opener.document.createEventObject(),e.eventType=i),e.eventName=i,e.__glArgs=t,e.__gl=this._layoutManager,document.createEvent?window.opener.dispatchEvent(e):window.opener.fireEvent("on"+e.eventType,e)},e.utils.EventHub.prototype._propagateToChildren=function(t){var e,i;for(i=0;i