diff options
| -rw-r--r-- | webAO/client.b.js | 2 | ||||
| -rw-r--r-- | webAO/client.b.js.map | 2 | ||||
| -rw-r--r-- | webAO/client.css | 11 | ||||
| -rw-r--r-- | webAO/client.html | 133 | ||||
| -rw-r--r-- | webAO/client.js | 376 | ||||
| -rw-r--r-- | webAO/lib/gify.min.js | 1 | ||||
| -rw-r--r-- | webAO/lib/jdataview.min.js | 50 | ||||
| -rw-r--r-- | webAO/misc/character_change.png | bin | 0 -> 1229 bytes | |||
| -rw-r--r-- | webAO/misc/character_random.png | bin | 0 -> 1277 bytes | |||
| -rw-r--r-- | webAO/misc/crossexamination.gif | bin | 0 -> 88834 bytes | |||
| -rw-r--r-- | webAO/misc/holdit.gif | bin | 0 -> 40518 bytes | |||
| -rw-r--r-- | webAO/misc/objection.gif | bin | 0 -> 44417 bytes | |||
| -rw-r--r-- | webAO/misc/takethat.gif | bin | 0 -> 42063 bytes | |||
| -rw-r--r-- | webAO/misc/witnesstestimony.gif | bin | 0 -> 105223 bytes | |||
| -rw-r--r-- | webAO/sounds/general/sfx-testimony.wav | bin | 0 -> 71436 bytes | |||
| -rw-r--r-- | webAO/sounds/general/sfx-testimony2.wav | bin | 0 -> 132764 bytes | |||
| -rw-r--r-- | webAO/ui.b.js | 2 | ||||
| -rw-r--r-- | webAO/ui.b.js.map | 2 | ||||
| -rw-r--r-- | webAO/ui.js | 46 |
19 files changed, 486 insertions, 139 deletions
diff --git a/webAO/client.b.js b/webAO/client.b.js index 5422bda..5202e12 100644 --- a/webAO/client.b.js +++ b/webAO/client.b.js @@ -1,2 +1,2 @@ -!function(e){var t={};function n(i){if(t[i])return t[i].exports;var c=t[i]={i:i,l:!1,exports:{}};return e[i].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var c in e)n.d(i,c,function(t){return e[t]}.bind(null,c));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}({3:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}t.onOOCEnter=v,t.onEnter=_,t.musiclist_click=E,t.area_click=I,t.changeMusicVolume=b,t.changeSFXVolume=B,t.changeBlipVolume=k,t.changeCharacter=w,t.imgError=C,t.demoError=x,t.ReconnectButton=N,t.RetryButton=O,t.pickchar=L,t.pickemotion=A,t.pickevidence=P,t.addevidence=D,t.editevidence=H,t.delevidence=j,t.cancelevidence=R,t.getIndexFromSelect=V,t.updateEvidenceIcon=F,t.changeBackgroundOOC=U,t.updateBackgroundPreview=z,t.toggleaffect=X,t.toggleflip=G,t.togglepresent=q,t.togglemenu=K,t.toggleshout=W;var a={};location.search.substr(1).split("&").forEach(function(e){a[e.split("=")[0]]=e.split("=")[1]});var o=a.ip,s=a.mode,l=a.asset||"http://assets.aceattorneyonline.com/base/",d=l+"sounds/music/",r=!1;/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)&&(r=!0);var u=0,m=1,h=0,g=new Date(0),p=function(){function e(t){var n=this;c(this,e),this.serv=new WebSocket("ws://"+t),this.serv.onopen=function(e){return n.onOpen(e)},this.serv.onclose=function(e){return n.onClose(e)},this.serv.onmessage=function(e){return n.onMessage(e)},this.serv.onerror=function(e){return n.onError(e)},this.flip=!1,this.presentable=!1,this.playerID=1,this.charID=-1,this.chars=[],this.emotes=[],this.evidences=[],this.selectedEmote=-1,this.selectedEvidence=0,this.checkUpdater=null,this.musicList=Object(),this.handlers={MS:function(e){return n.handleMS(e)},CT:function(e){return n.handleCT(e)},MC:function(e){return n.handleMC(e)},RMC:function(e){return n.handleRMC(e)},CI:function(e){return n.handleCI(e)},SC:function(e){return n.handleSC(e)},EI:function(e){return n.handleEI(e)},LE:function(e){return n.handleLE(e)},EM:function(e){return n.handleEM(e)},SM:function(e){return n.handleSM(e)},music:function(e){return n.handlemusic(e)},DONE:function(e){return n.handleDONE(e)},BN:function(e){return n.handleBN(e)},NBG:function(e){return n.handleNBG(e)},HP:function(e){return n.handleHP(e)},ID:function(e){return n.handleID(e)},PN:function(e){return n.handlePN(e)},SI:function(e){return n.handleSI(e)},CharsCheck:function(e){return n.handleCharsCheck(e)},PV:function(e){return n.handlePV(e)},CHECK:function(e){}},this._lastTimeICReceived=new Date(0)}return i(e,[{key:"me",value:function(){return this.chars[this.charID]}},{key:"myEmote",value:function(){return this.emotes[this.selectedEmote]}},{key:"myEvidence",value:function(){return this.presentable?this.selectedEvidence:0}},{key:"sendOOC",value:function(e){this.serv.send("CT#web"+this.playerID+"#"+J(Y(e))+"#%")}},{key:"sendIC",value:function(e,t,n,i,c,a,o,s,l,d,r,u,m){this.serv.send("MS#chat#"+e+"#"+t+"#"+n+"#"+J(Y(i))+"#"+c+"#"+a+"#"+o+"#"+this.charID+"#"+s+"#"+h+"#"+d+"#"+r+"#"+u+"#"+m+"#%")}},{key:"sendPE",value:function(e,t,n){this.serv.send("PE#"+J(Y(e))+"#"+J(Y(t))+"#"+n+"#%")}},{key:"sendEE",value:function(e,t,n,i){this.serv.send("EE#"+e+"#"+J(Y(t))+"#"+J(Y(n))+"#"+i+"#%")}},{key:"sendDE",value:function(e,t,n,i){this.serv.send("DE#"+e+"#%")}},{key:"sendMusicChange",value:function(e){this.serv.send("MC#"+e+"#"+this.charID+"#%")}},{key:"sendLeaveRoom",value:function(){this.serv.send("FC#%")}},{key:"joinServer",value:function(){var e=this;this.serv.send("HI#"+navigator.userAgent.hashCode()+"#%"),this.serv.send("ID#webAO#2.4.5#%"),this.checkUpdater=setInterval(function(){return e.sendCheck()},5e3)}},{key:"loadResources",value:function(){var e=document.getElementById("evi_select");e.add(new Option("Custom",0));for(var t=1;t<=evidence_arr.length;t++)e.add(new Option(evidence_arr[t-1]));var n=document.getElementById("bg_select");n.add(new Option("Custom",0));for(var i=1;i<=background_arr.length;i++)n.add(new Option(background_arr[i-1]))}},{key:"initialObservBBCode",value:function(){var e=document.getElementById("client_inner_chat");new MutationObserver(function(e){e.forEach(function(e){var t=e.addedNodes;null!==t&&t.forEach(function(e){"C"==e.tagName?e.style.color=e.getAttribute("a"):"M"==e.tagName&&(e.hasAttribute("a")?e.style.backgroundColor=e.getAttribute("a"):(e.style.backgroundColor="yellow",e.style.color="black"))})})}).observe(e,{attributes:!0,childList:!0})}},{key:"sendCharacter",value:function(e){this.serv.send("CC#"+this.playerID+"#"+e+"#web#%")}},{key:"sendMusic",value:function(e){this.serv.send("MC#"+e)}},{key:"sendCheck",value:function(){this.serv.send("CH#"+this.charID+"#%")}},{key:"onOpen",value:function(e){"watch"===s?(document.getElementById("client_loading").style.display="none",document.getElementById("client_charselect").style.display="none"):te.joinServer()}},{key:"onClose",value:function(e){console.error("The connection was closed: "+e.reason+" ("+e.code+")"),1001!==e.code&&(document.getElementById("client_error").style.display="block",document.getElementById("error_id").textContent=e.code,this.cleanup())}},{key:"onMessage",value:function(e){var t=e.data;console.debug(t);var n=t.split("%")[0].split("#"),i=n[0],c=this.handlers[i];void 0!==c?c(n):console.warn("Invalid packet header "+i)}},{key:"onError",value:function(e){console.error("A network error occurred: "+e.reason+" ("+e.code+")"),document.getElementById("client_error").style.display="block",document.getElementById("error_id").textContent=e.code,this.cleanup()}},{key:"cleanup",value:function(){try{this.serv.close(1001)}catch(e){}clearInterval(this.checkUpdater)}},{key:"handleMS",value:function(e){if(e[4]!=ne.chatmsg.content){document.getElementById("client_inner_chat").innerHTML="";for(var t={character:-1,preanim:escape(e[2]),nameplate:e[3],name:e[3],speaking:"(b)"+escape(e[4]),silent:"(a)"+escape(e[4]),content:function(e){return e.replace(/\\n/g,"<br>").replace(/\[(\/?)b\]/g,"<$1b>").replace(/\[(\/?)i\]/g,"<$1i>").replace(/\[(\/?)del\]/g,"<$1del>").replace(/\[(\/?)u\]/g,"<$1ins>").replace(/\[(\/?)sub\]/g,"<$1sub>").replace(/\[(\/?)sup\]/g,"<$1sup>").replace(/\[m=([#a-zA-Z0-9]+)\]/g,'<m a="$1">').replace(/\[(\/?)m\]/g,"<$1m>").replace(/\[c=?([#a-zA-Z0-9]+)\]/g,'<c a="$1">').replace(/\[\/c\]/g,"</c>")}(Z(ee(Q(e[5])))),side:e[6],sound:escape(e[7]),type:e[8],snddelay:e[10],objection:e[11],evidence:e[12],flip:e[13],flash:e[14],color:e[15],isnew:!0},n=0;n<this.chars.length;n++)if(this.chars[n].name==e[3]){t.character=n;break}t.character==this.charID&&function(){document.getElementById("client_inputbox").value="",u&&(document.getElementById("button_effect_"+u).className="client_button",u=0);h&&(document.getElementById("button_"+h).className="client_button",h=0)}(),ne.say(t)}}},{key:"handleCT",value:function(e){var t=document.getElementById("client_ooclog");t.innerHTML+=ee(Q(e[1]))+": "+ee(Q(e[2]))+"\r\n",t.scrollTop>t.scrollHeight-60&&(t.scrollTop=t.scrollHeight)}},{key:"handleMC",value:function(e){var t=ne.music;(t.pause(),t.src=d+e[1],t.play(),e[2]>=0)?S(this.chars[e[2]].name+" changed music to "+e[1]):S("The music was changed to "+e[1])}},{key:"handleRMC",value:function(e){ne.music.pause(),ne.music=new Audio(this.musicList[e[1]]);var t=ne.music;t.totime=e[1],t.offset=(new Date).getTime()/1e3,t.addEventListener("loadedmetadata",function(){t.currentTime+=parseFloat(t.totime+((new Date).getTime()/1e3-t.offset)).toFixed(3),t.play()},!1)}},{key:"handleCI",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Character "+e[1],this.serv.send("AN#"+(e[1]/10+1)+"#%");for(var t=2;t<e.length-1;t++)if(t%2==0){var n=e[t].split("&");this.chars[e[t-1]]={name:n[0],desc:n[1],evidence:n[3],icon:l+"characters/"+escape(n[0])+"/char_icon.png"}}}},{key:"handleSC",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Characters";for(var t=1;t<e.length-1;t++){var n=e[t].split("&");this.chars[t-1]={name:n[0],desc:n[1],evidence:n[3],icon:l+"characters/"+escape(n[0])+"/char_icon.png"}}this.serv.send("RM#%")}},{key:"handleEI",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Evidence "+e[1],this.serv.send("RM#%")}},{key:"handleLE",value:function(e){this.evidences=[];for(var t=1;t<e.length-1;t++){var n=e[t].split("&");this.evidences[t-1]={name:Z(ee(Q(n[0]))),desc:Z(ee(Q(n[1]))),filename:escape(n[2]),icon:l+"evidence/"+escape(n[2])}}var i=document.getElementById("evidences");i.innerHTML="";for(var c=1;c<=this.evidences.length;c++)i.innerHTML+='<img src="'+this.evidences[c-1].icon+'" id="evi_'+c+'" alt="'+this.evidences[c-1].name+'" class="client_button" onclick="pickevidence('+c+')">'}},{key:"handleEM",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Music "+e[1],this.serv.send("AM#"+(e[1]/10+1)+"#%");for(var t=document.getElementById("client_musiclist"),n=2;n<e.length-1;n++)if(n%2==0){var i=document.createElement("OPTION");i.text=e[n],t.options.add(i)}}},{key:"handleSM",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Music ";for(var t=document.getElementById("client_musiclist"),n=!1,i=1;i<e.length-1;i++)if(/\.(?:wav|mp3|mp4|ogg|mid)$/i.test(e[i])&&!n&&(n=!0),n){var c=document.createElement("OPTION");c.text=e[i],t.options.add(c)}else{var a=document.createElement("SPAN");a.className="location-box",a.textContent=e[i],a.onclick=function(){I(this)},document.getElementById("areas").appendChild(a)}var o=document.getElementById("areas"),s=document.createElement("OPTION");s.text=o.lastChild.textContent,t.insertBefore(s,t.firstChild),o.removeChild(o.lastChild),this.serv.send("RD#%")}},{key:"handlemusic",value:function(e){for(var t=0;t<e.length/2;t++)this.musicList[e[2*t]]=e[2*t+1]}},{key:"handleDONE",value:function(e){document.getElementById("client_loading").style.display="none",document.getElementById("client_charselect").style.display="block"}},{key:"handleBN",value:function(e){ne.bgname=escape(e[1]);var t=V("bg_select",escape(e[1]));document.getElementById("bg_select").selectedIndex=t,z(),0==t&&(document.getElementById("bg_filename").value=e[1]),document.getElementById("bg_preview").src=l+"background/"+escape(e[1])+"/defenseempty.png"}},{key:"handleNBG",value:function(e){}},{key:"handleHP",value:function(e){1==e[1]?document.getElementById("client_defense_hp").style.clip="rect(0px,"+90*e[2]/10+"px,20px,0px)":document.getElementById("client_prosecutor_hp").style.clip="rect(0px,"+90*e[2]/10+"px,20px,0px)"}},{key:"handleID",value:function(e){this.playerID=e[1]}},{key:"handlePN",value:function(e){this.serv.send("askchaa#%")}},{key:"handleSI",value:function(e){r?this.serv.send("askchar2#%"):this.serv.send("RC#%")}},{key:"handleCharsCheck",value:function(e){document.getElementById("client_chartable").innerHTML="";for(var t=0;t<this.chars.length;t++){if(t%8==0)var n=document.createElement("TR");var i=document.createElement("TD"),c=void 0,a=this.chars[t].icon;c="-1"==e[t+1]?" dark":"",i.innerHTML="<img class='demothing"+c+"' id='demo_"+t+"' src='"+a+"' alt='"+this.chars[t].name+"' onclick='pickchar("+t+")' onerror='demoError(this);'>",n.appendChild(i),t%8==0&&document.getElementById("client_chartable").appendChild(n)}M("def")}},{key:"handlePV",value:function(e){this.charID=e[3],document.getElementById("client_charselect").style.display="none";var t=this.me(),n=this.emotes,i=new XMLHttpRequest;i.open("GET",l+"characters/"+escape(this.me().name)+"/char.ini",!0),i.responseType="text",i.onload=function(e){if(200==this.status){var i=this.responseText,c=y.parse(i);t.side=c.Options.side;for(var a=1;a<c.Emotions.number;a++){var o=c.Emotions[a].split("#"),s="0",d="0";void 0!==c.SoundN&&(s=c.SoundN[a]),void 0!==c.SoundT&&(d=c.SoundT[a]),n[a]={desc:o[0],speaking:o[1],silent:o[2],zoom:o[3],sfx:s,sfxdelay:d,button_off:l+"characters/"+escape(t.name)+"/emotions/button"+a+"_off.png",button_on:l+"characters/"+escape(t.name)+"/emotions/button"+a+"_on.png"},document.getElementById("client_emo").innerHTML+="<img src='"+n[a].button_off+"' id='emo_"+a+"' alt='"+n[a].desc+"' class='client_button' onclick='pickemotion("+a+")'>"}A(1)}},i.send()}}]),e}(),f=function(){function e(){c(this,e),this.textnow="",this.chatmsg={isnew:!1,content:"",objection:"0",sound:"",startpreanim:!1,startspeaking:!1,side:null,color:"0",snddelay:0,preanimdelay:0},this.blip=new Audio(l+"sounds/general/sfx-blipmale.wav"),this.blip.volume=.5,this.blipChannels=new Array(6);for(var t=0;t<this.blipChannels.length;t++)this.blipChannels[t]=new Audio(l+"sounds/general/sfx-blipmale.wav"),this.blipChannels[t].volume=.5;this.currentBlipChannel=0,this.sfxaudio=new Audio(l+"sounds/general/sfx-blipmale.wav"),this.sfxplayed=0,this.music=new Audio,this.music.play(),this.updater=null,this.bgname="gs4",this.shoutTimer=0,this.textTimer=0,this._animating=!1}return i(e,[{key:"isAnimating",value:function(){return this._animating}},{key:"setBlipVolume",value:function(e){for(var t=0;t<this.blipChannels.length;t++)this.blipChannels[t].volume=e}},{key:"bgFolder",value:function(){return l+"background/"+this.bgname+"/"}},{key:"say",value:function(e){this.chatmsg=e,S(e.content,e.nameplate),M(e.side),this.textnow="",this.sfxplayed=0,this.textTimer=0,this._animating=!0,clearTimeout(this.updater),"-"!=e.preanim?e.preanimdelay=this.getAnimLength(l+"characters/"+escape(e.name)+"/"+e.preanim+".gif",this.initUpdater):this.initUpdater(0)}},{key:"initUpdater",value:function(e){ne.chatmsg.preanimdelay=parseInt(e),ne.updater=setTimeout(function(){return ne.updateText()},65)}},{key:"getAnimLength",value:function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.addEventListener("load",function(){for(var e=new Uint8Array(n.response),i=0,c=0;c<e.length;c++)if(String.fromCharCode(e[c]),33==e[c]&&249==e[c+1]&&4==e[c+2]&&0==e[c+7]){var a=e[c+5]<<8|255&e[c+4];i+=a<2?10:a}t(10*i)}),n.send()}},{key:"updateText",value:function(){var e=this;if(1==this.chatmsg.flip?document.getElementById("client_char").style.transform="scaleX(-1)":document.getElementById("client_char").style.transform="scaleX(1)",this._animating&&(this.updater=setTimeout(function(){return e.updateText()},65)),this.chatmsg.isnew){document.getElementById("client_background").style.backgroundColor="transparent",document.getElementById("client_name").style.display="none",document.getElementById("client_chat").style.display="none",document.getElementById("client_evi").style.opacity="0",document.getElementById("client_evi").style.height="0%";var t={1:"holdit",2:"objection",3:"takethat"}[this.chatmsg.objection];void 0!==t?(document.getElementById("client_shout").src=l+"misc/"+t+".gif",new Audio(l+"/characters/"+this.chatmsg.name+"/"+t+".wav").play(),this.shoutTimer=850):this.shoutTimer=0,this.chatmsg.isnew=!1,this.chatmsg.startpreanim=!0}if(this.textTimer>=this.shoutTimer&&this.chatmsg.startpreanim)2==this.chatmsg.flash?(this.sfxaudio.pause(),this.sfxplayed=1,this.sfxaudio.src=l+"sounds/general/sfx-stab.wav",this.sfxaudio.play(),$("#client_gamewindow").effect("shake",{direction:"up"})):1==this.chatmsg.flash&&(document.getElementById("client_background").style.backgroundColor="white",this.sfxaudio.pause(),this.sfxplayed=1,this.sfxaudio.src=l+"sounds/general/sfx-realization.wav",this.sfxaudio.play(),$("#client_gamewindow").effect("pulsate")),this.chatmsg.preanimdelay>0&&(document.getElementById("client_shout").src="misc/placeholder.gif",M(this.chatmsg.side),document.getElementById("client_char").src=l+"characters/"+escape(this.chatmsg.name)+"/"+this.chatmsg.preanim+".gif"),this.chatmsg.startpreanim=!1,this.chatmsg.startspeaking=!0;else if(this.textTimer>=this.shoutTimer+this.chatmsg.preanimdelay&&!this.chatmsg.startpreanim)if(this.chatmsg.startspeaking){this.chatmsg.evidence>0&&(document.getElementById("client_evi").style.backgroundImage="url('"+te.evidences[this.chatmsg.evidence-1].icon+"')","def"==this.chatmsg.side?(document.getElementById("client_evi").style.right="1.5em",document.getElementById("client_evi").style.left="initial",$("#client_evi").animate({height:"30%",opacity:1},250)):(document.getElementById("client_evi").style.right="initial",document.getElementById("client_evi").style.left="1.5em",$("#client_evi").animate({height:"30%",opacity:1},250))),$("#client_name").toggle("fade"),$("#client_chat").toggle("drop",{direction:"down"}),0==this.chatmsg.preanimdelay&&(document.getElementById("client_shout").src="misc/placeholder.gif",M(this.chatmsg.side)),document.getElementById("client_char").src=l+"characters/"+escape(this.chatmsg.name)+"/"+this.chatmsg.speaking+".gif",document.getElementById("client_name").style.fontSize=.7*document.getElementById("client_name").offsetHeight+"px",document.getElementById("client_chat").style.fontSize=.25*document.getElementById("client_chat").offsetHeight+"px",document.getElementById("client_name").innerHTML="<p>"+Z(this.chatmsg.nameplate)+"</p>";var n="color: "+({0:"#ffffff",1:"#00ff00",2:"#ff0000",3:"#ffaa00",4:"#0000ff",5:"#ffff00",6:"#aa00aa"}[this.chatmsg.color]||"#ffffff");document.getElementById("client_inner_chat").style=n,this.chatmsg.startspeaking=!1,this.textnow==this.chatmsg.content&&(document.getElementById("client_char").src=l+"characters/"+escape(this.chatmsg.name)+"/"+this.chatmsg.silent+".gif",this._animating=!1,clearTimeout(this.updater))}else this.textnow!=this.chatmsg.content&&(" "!=this.chatmsg.content.charAt(this.textnow.length)&&(this.blipChannels[this.currentBlipChannel].play(),this.currentBlipChannel++,this.currentBlipChannel%=this.blipChannels.length),this.textnow=this.chatmsg.content.substring(0,this.textnow.length+1),document.getElementById("client_inner_chat").innerHTML=this.textnow,this.textnow==this.chatmsg.content&&(this.textTimer=0,this._animating=!1,document.getElementById("client_char").src=l+"characters/"+escape(this.chatmsg.name)+"/"+this.chatmsg.silent+".gif",clearTimeout(this.updater)));!this.sfxplayed&&this.chatmsg.snddelay+this.shoutTimer>=this.textTimer&&(this.sfxaudio.pause(),this.sfxplayed=1,"0"!=this.chatmsg.sound&&"1"!=this.chatmsg.sound&&(this.sfxaudio.src=l+"sounds/general/"+escape(this.chatmsg.sound)+".wav",this.sfxaudio.play())),this.textTimer=this.textTimer+65}}]),e}(),y=function(){function e(){c(this,e)}return i(e,null,[{key:"parse",value:function(e){var t={section:/^\s*\[\s*([^\]]*)\s*\]\s*$/,param:/^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/,comment:/^\s*;.*$/},n={},i=null;return e.split(/\r\n|\r|\n/).forEach(function(e){if(!t.comment.test(e)&&0!=e.length)if(t.param.test(e)){var c=e.match(t.param);i?n[i][c[1]]=c[2]:n[c[1]]=c[2]}else if(t.section.test(e)){var a=e.match(t.section);n[a[1]]={},i=a[1]}}),n}}]),e}();function v(e){13==e.keyCode&&(te.sendOOC(document.getElementById("client_oocinputbox").value),document.getElementById("client_oocinputbox").value="")}function _(e){if(13==e.keyCode){var t=te.me(),n=te.myEmote(),i=te.myEvidence(),c=te.flip?1:0,a=document.getElementById("textcolor").value,o="0",s="0";document.getElementById("sendsfx").checked&&(o=n.sfx,s=n.sfxdelay),te.sendIC(n.speaking,t.name,n.silent,document.getElementById("client_inputbox").value,t.side,o,n.zoom,s,h,i,c,u,a)}}function E(e){var t=document.getElementById("client_musiclist").value;te.sendMusicChange(t)}function I(e){var t=e.textContent;te.sendMusicChange(t)}function b(){ne.music.volume=document.getElementById("client_mvolume").value/100}function B(){ne.sfxaudio.volume=document.getElementById("client_svolume").value/100}function k(){ne.setBlipVolume(document.getElementById("client_bvolume").value/100)}function w(e){te.sendLeaveRoom(),document.getElementById("client_charselect").style.display="block",document.getElementById("client_emo").innerHTML=""}function C(e){return e.onerror="",e.src="misc/placeholder.gif",!0}function x(e){return e.onerror="",e.src="/misc/placeholder.png",!0}function T(e){var t=new Image;return t.src=e,0!=t.height}function M(e){var t,n=ne.bgFolder();switch(document.getElementById("client_fg").style.display="none",document.getElementById("client_bench").style.display="none",e){case"def":document.getElementById("client_court").src=n+"defenseempty.png",document.getElementById("client_bench").style.display="block",T(n+"defensedesk.png")?document.getElementById("client_bench").src=n+"defensedesk.png":document.getElementById("client_bench").src=n+"bancodefensa.png",t="defense";break;case"pro":document.getElementById("client_court").src=n+"prosecutorempty.png",document.getElementById("client_bench").style.display="block",T(n+"defensedesk.png")?document.getElementById("client_bench").src=n+"prosecutiondesk.png":document.getElementById("client_bench").src=n+"bancoacusacion.png",t="prosecution";break;case"hld":document.getElementById("client_court").src=n+"helperstand.png",t="defense";break;case"hlp":document.getElementById("client_court").src=n+"prohelperstand.png",t="prosecution";break;case"wit":document.getElementById("client_court").src=n+"witnessempty.png",document.getElementById("client_bench").style.display="block",document.getElementById("client_bench").src=n+"estrado.png",t="prosecution";break;case"jud":document.getElementById("client_court").src=n+"judgestand.png",t="prosecution"}5==ne.chatmsg.type&&(document.getElementById("client_bench").style.display="none",document.getElementById("client_court").src=l+"themes/default/"+t+"_speedlines.gif")}function N(){te.cleanup(),(te=new p(o))&&(s="join",document.getElementById("client_error").style.display="none")}function O(){te.joinServer()}function S(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Date,i=document.createElement("p"),c=document.createElement("span");if(c.id="iclog_name",c.appendChild(document.createTextNode(t)),i.appendChild(c),i.appendChild(document.createTextNode(e)),g.getMinutes()!==n.getMinutes()){var a=document.createElement("span");a.id="iclog_time",a.innerText=n.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),i.appendChild(a)}var o=document.getElementById("client_log");o.appendChild(i),o.scrollTop>o.scrollHeight-600&&(o.scrollTop=o.scrollHeight),g=new Date}function L(e){e<1e3?te.sendCharacter(e):(document.getElementById("client_charselect").style.display="none",document.getElementById("client_inputbox").style.display="none",document.getElementById("client_emo").style.display="none")}function A(e){-1!=te.selectedEmote&&(document.getElementById("emo_"+te.selectedEmote).src=te.myEmote().button_off),te.selectedEmote=e,document.getElementById("emo_"+e).src=te.myEmote().button_on}function P(e){if(te.selectedEvidence!=e){te.selectedEvidence>0&&(document.getElementById("evi_"+te.selectedEvidence).className="client_button"),document.getElementById("evi_"+e).className="client_button dark",te.selectedEvidence=e,document.getElementById("evi_name").value=te.evidences[e-1].name,document.getElementById("evi_desc").value=te.evidences[e-1].desc;var t=V("evi_select",te.evidences[e-1].filename);document.getElementById("evi_select").selectedIndex=t,0==t&&(document.getElementById("evi_filename").value=te.evidences[e-1].filename),F(),document.getElementById("evi_add").className="client_button hover_button inactive",document.getElementById("evi_edit").className="client_button hover_button",document.getElementById("evi_cancel").className="client_button hover_button",document.getElementById("evi_del").className="client_button hover_button"}else R()}function D(){var e=document.getElementById("evi_select");te.sendPE(document.getElementById("evi_name").value,document.getElementById("evi_desc").value,0==e.selectedIndex?document.getElementById("evi_filename").value:e.options[e.selectedIndex].text),R()}function H(){var e=document.getElementById("evi_select"),t=parseInt(te.selectedEvidence)-1;te.sendEE(t,document.getElementById("evi_name").value,document.getElementById("evi_desc").value,0==e.selectedIndex?document.getElementById("evi_filename").value:e.options[e.selectedIndex].text),R()}function j(){var e=parseInt(te.selectedEvidence)-1;te.sendDE(e),R()}function R(){te.selectedEvidence>0&&(document.getElementById("evi_"+te.selectedEvidence).className="client_button"),te.selectedEvidence=0,document.getElementById("evi_select").selectedIndex=0,F(),document.getElementById("evi_filename").value="",document.getElementById("evi_name").value="",document.getElementById("evi_desc").value="",document.getElementById("evi_icon").style.backgroundImage="url('misc/empty.png')",document.getElementById("evi_add").className="client_button hover_button",document.getElementById("evi_edit").className="client_button hover_button inactive",document.getElementById("evi_cancel").className="client_button hover_button inactive",document.getElementById("evi_del").className="client_button hover_button inactive"}function V(e,t){for(var n=document.getElementById(e),i=1;i<n.length;++i)if(n.options[i].value==t)return i;return 0}function F(){var e=document.getElementById("evi_select"),t=document.getElementById("evi_filename"),n=document.getElementById("evi_icon");0==e.selectedIndex?(t.style.display="initial",n.style.backgroundImage="url('"+l+"evidence/"+t.value+"')"):(t.style.display="none",n.style.backgroundImage="url('"+l+"evidence/"+e.value+"')")}function U(){var e="",t=document.getElementById("bg_select"),n=document.getElementById("bg_command").value;e=0==t.selectedIndex?document.getElementById("bg_filename").value:t.value,te.sendOOC("/"+n.replace("$1",e))}function z(){var e=document.getElementById("bg_select"),t=document.getElementById("bg_filename"),n=document.getElementById("bg_preview");0==e.selectedIndex?(t.style.display="initial",n.src=l+"background/"+t.value+"/defenseempty.png"):(t.style.display="none",n.src=l+"background/"+e.value+"/defenseempty.png")}function X(e){e==u?(document.getElementById("button_effect_"+e).className="client_button",u=0):(document.getElementById("button_effect_"+e).className="client_button dark",u&&(document.getElementById("button_effect_"+u).className="client_button"),u=e)}function G(){te.flip?document.getElementById("button_flip").className="client_button":document.getElementById("button_flip").className="client_button dark",te.flip=!te.flip}function q(){te.presentable?document.getElementById("button_present").className="client_button":document.getElementById("button_present").className="client_button dark",te.presentable=!te.presentable}function K(e){e!=m&&(document.getElementById("menu_"+e).className="menu_icon active",document.getElementById("content_"+e).className="menu_content active",document.getElementById("menu_"+m).className="menu_icon",document.getElementById("content_"+m).className="menu_content",m=e)}function W(e){e==h?(document.getElementById("button_"+e).className="client_button",h=0):(document.getElementById("button_"+e).className="client_button dark",h&&(document.getElementById("button_"+h).className="client_button"),h=e)}function Z(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function J(e){return e.replace(/#/g,"<pound>").replace(/&/g,"<and>").replace(/%/g,"<percent>").replace(/\$/g,"<dollar>")}function Q(e){return e.replace(/<pound>/g,"#").replace(/<and>/g,"&").replace(/<percent>/g,"%").replace(/<dollar>/g,"$")}function Y(e){var t=document.getElementById("client_encoding").value;if("unicode"==t)return e.replace(/[^\0-~]/g,function(e){return"\\u"+("000"+e.charCodeAt().toString(16)).slice(-4)});if("utf16"==t){for(var n=new ArrayBuffer(2*e.length),i=new Uint16Array(n),c=0,a=e.length;c<a;c++)i[c]=e.charCodeAt(c);return String(i)}return e}function ee(e){var t=document.getElementById("client_decoding").value;return"unicode"==t?e.replace(/\\u([\d\w]{1,})/gi,function(e,t){return String.fromCharCode(parseInt(t,16))}):"utf16"==t?String.fromCharCode.apply(null,new Uint16Array(e.split(","))):e}window.onOOCEnter=v,window.onEnter=_,window.musiclist_click=E,window.area_click=I,window.changeMusicVolume=b,window.changeSFXVolume=B,window.changeBlipVolume=k,window.changeCharacter=w,window.imgError=C,window.demoError=x,window.ReconnectButton=N,window.RetryButton=O,window.pickchar=L,window.pickemotion=A,window.pickevidence=P,window.addevidence=D,window.editevidence=H,window.delevidence=j,window.cancelevidence=R,window.getIndexFromSelect=V,window.updateEvidenceIcon=F,window.changeBackgroundOOC=U,window.updateBackgroundPreview=z,window.toggleaffect=X,window.toggleflip=G,window.togglepresent=q,window.togglemenu=K,window.toggleshout=W,void 0===String.prototype.trim&&(String.prototype.trim=function(){return String(this).replace(/^\s+|\s+$/g,"")}),String.prototype.hashCode=function(){var e,t=0;if(0===this.length)return t;for(e=0;e<this.length;e++)t=(t<<5)-t+this.charCodeAt(e),t|=0;return t};var te=new p(o),ne=new f;$(document).ready(function(){te.initialObservBBCode(),te.loadResources()})}}); +!function(e){var t={};function n(i){if(t[i])return t[i].exports;var c=t[i]={i:i,l:!1,exports:{}};return e[i].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var c in e)n.d(i,c,function(t){return e[t]}.bind(null,c));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}({3:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}t.onOOCEnter=v,t.onEnter=_,t.musiclist_click=E,t.area_click=I,t.changeMusicVolume=b,t.changeSFXVolume=B,t.changeBlipVolume=k,t.changeCharacter=w,t.imgError=x,t.demoError=C,t.ReconnectButton=N,t.RetryButton=L,t.pickchar=D,t.pickemotion=R,t.pickevidence=A,t.addevidence=H,t.editevidence=P,t.delevidence=j,t.cancelevidence=U,t.getIndexFromSelect=Z,t.updateEvidenceIcon=F,t.updateActionCommands=V,t.changeBackgroundOOC=X,t.changeRoleOOC=G,t.randomCharacterOOC=z,t.callmod=q,t.initwt=K,t.initce=W,t.updateBackgroundPreview=J,t.toggleaffect=Q,t.toggleflip=Y,t.togglepresent=ee,t.togglemenu=te,t.toggleshout=ne;var s={};location.search.substr(1).split("&").forEach(function(e){s[e.split("=")[0]]=e.split("=")[1]});var o=s.ip,a=s.mode,l=s.asset||"http://assets.aceattorneyonline.com/base/",d=l+"sounds/music/",r=!1;/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)&&(r=!0);var u=0,m=1,h=0,g=new Date(0),y=function(){function e(t){var n=this;c(this,e),this.serv=new WebSocket("ws://"+t),this.serv.onopen=function(e){return n.onOpen(e)},this.serv.onclose=function(e){return n.onClose(e)},this.serv.onmessage=function(e){return n.onMessage(e)},this.serv.onerror=function(e){return n.onError(e)},this.flip=!1,this.presentable=!1,this.playerID=1,this.charID=-1,this.testimonyID=0,this.chars=[],this.emotes=[],this.evidences=[],this.resources={holdit:{src:"misc/holdit.gif",duration:720},objection:{src:"misc/objection.gif",duration:720},takethat:{src:"misc/takethat.gif",duration:840},witnesstestimony:{src:"misc/witnesstestimony.gif",duration:1560,sfx:"sounds/general/sfx-testimony.wav"},crossexamination:{src:"misc/crossexamination.gif",duration:1600,sfx:"sounds/general/sfx-testimony2.wav"}},this.selectedEmote=-1,this.selectedEvidence=0,this.checkUpdater=null,this.musicList=Object(),this.handlers={MS:function(e){return n.handleMS(e)},CT:function(e){return n.handleCT(e)},MC:function(e){return n.handleMC(e)},RMC:function(e){return n.handleRMC(e)},CI:function(e){return n.handleCI(e)},SC:function(e){return n.handleSC(e)},EI:function(e){return n.handleEI(e)},LE:function(e){return n.handleLE(e)},EM:function(e){return n.handleEM(e)},SM:function(e){return n.handleSM(e)},music:function(e){return n.handlemusic(e)},DONE:function(e){return n.handleDONE(e)},BN:function(e){return n.handleBN(e)},NBG:function(e){return n.handleNBG(e)},HP:function(e){return n.handleHP(e)},RT:function(e){return n.handleRT(e)},ZZ:function(e){return n.handleZZ(e)},ID:function(e){return n.handleID(e)},PN:function(e){return n.handlePN(e)},SI:function(e){return n.handleSI(e)},CharsCheck:function(e){return n.handleCharsCheck(e)},PV:function(e){return n.handlePV(e)},CHECK:function(e){}},this._lastTimeICReceived=new Date(0)}return i(e,[{key:"me",value:function(){return this.chars[this.charID]}},{key:"myEmote",value:function(){return this.emotes[this.selectedEmote]}},{key:"myEvidence",value:function(){return this.presentable?this.selectedEvidence:0}},{key:"sendOOC",value:function(e){this.serv.send("CT#web"+this.playerID+"#"+ce(oe(e))+"#%")}},{key:"sendIC",value:function(e,t,n,i,c,s,o,a,l,d,r,u,m){this.serv.send("MS#chat#"+e+"#"+t+"#"+n+"#"+ce(oe(i))+"#"+c+"#"+s+"#"+o+"#"+this.charID+"#"+a+"#"+h+"#"+d+"#"+r+"#"+u+"#"+m+"#%")}},{key:"sendPE",value:function(e,t,n){this.serv.send("PE#"+ce(oe(e))+"#"+ce(oe(t))+"#"+n+"#%")}},{key:"sendEE",value:function(e,t,n,i){this.serv.send("EE#"+e+"#"+ce(oe(t))+"#"+ce(oe(n))+"#"+i+"#%")}},{key:"sendDE",value:function(e){this.serv.send("DE#"+e+"#%")}},{key:"sendZZ",value:function(e){this.serv.send("ZZ#"+e+"#%")}},{key:"sendRT",value:function(e){"jud"==this.chars[this.charID].side&&this.serv.send("RT#"+e+"#%")}},{key:"sendMusicChange",value:function(e){this.serv.send("MC#"+e+"#"+this.charID+"#%")}},{key:"sendLeaveRoom",value:function(){this.serv.send("FC#%")}},{key:"joinServer",value:function(){var e=this;this.serv.send("HI#"+navigator.userAgent.hashCode()+"#%"),this.serv.send("ID#webAO#2.4.5#%"),this.checkUpdater=setInterval(function(){return e.sendCheck()},5e3)}},{key:"loadResources",value:function(){var e=document.getElementById("evi_select");e.add(new Option("Custom",0));for(var t=1;t<=evidence_arr.length;t++)e.add(new Option(evidence_arr[t-1]));var n=document.getElementById("bg_select");n.add(new Option("Custom",0));for(var i=1;i<=background_arr.length;i++)n.add(new Option(background_arr[i-1]));for(var c=["holdit","objection","takethat"],s=0;s<c.length;s++){T(l+this.resources[c[s]].src,this.callbackLoadImageResources,c[s])}for(var o=["witnesstestimony","crossexamination"],a=0;a<o.length;a++){T(l+"themes/default/"+o[a]+".gif",this.callbackLoadImageResources,o[a]),T(l+this.resources[o[a]].sfx,this.callbackLoadSFXResources,o[a])}}},{key:"callbackLoadImageResources",value:function(e,t,n){e&&(le.resources[t].src=n,de.getAnimLength(n,le.callbackGetResourceLength,t))}},{key:"callbackGetResourceLength",value:function(e,t){le.resources[t].duration=e}},{key:"callbackLoadSFXResources",value:function(e,t,n){e&&(le.resources[t].sfx=n)}},{key:"initialObservBBCode",value:function(){var e=document.getElementById("client_inner_chat");new MutationObserver(function(e){e.forEach(function(e){var t=e.addedNodes;null!==t&&t.forEach(function(e){"C"==e.tagName?e.style.color=e.getAttribute("a"):"M"==e.tagName&&(e.hasAttribute("a")?e.style.backgroundColor=e.getAttribute("a"):(e.style.backgroundColor="yellow",e.style.color="black"))})})}).observe(e,{attributes:!0,childList:!0})}},{key:"sendCharacter",value:function(e){this.serv.send("CC#"+this.playerID+"#"+e+"#web#%")}},{key:"sendMusic",value:function(e){this.serv.send("MC#"+e)}},{key:"sendCheck",value:function(){this.serv.send("CH#"+this.charID+"#%")}},{key:"onOpen",value:function(e){"watch"===a?(document.getElementById("client_loading").style.display="none",document.getElementById("client_charselect").style.display="none"):le.joinServer()}},{key:"onClose",value:function(e){console.error("The connection was closed: "+e.reason+" ("+e.code+")"),1001!==e.code&&(document.getElementById("client_error").style.display="block",document.getElementById("error_id").textContent=e.code,this.cleanup())}},{key:"onMessage",value:function(e){var t=e.data;console.debug(t);var n=t.split("%")[0].split("#"),i=n[0],c=this.handlers[i];void 0!==c?c(n):console.warn("Invalid packet header "+i)}},{key:"onError",value:function(e){console.error("A network error occurred: "+e.reason+" ("+e.code+")"),document.getElementById("client_error").style.display="block",document.getElementById("error_id").textContent=e.code,this.cleanup()}},{key:"cleanup",value:function(){try{this.serv.close(1001)}catch(e){}clearInterval(this.checkUpdater)}},{key:"handleMS",value:function(e){if(e[4]!=de.chatmsg.content){document.getElementById("client_inner_chat").innerHTML="";for(var t={character:-1,preanim:escape(e[2]),nameplate:e[3],name:e[3],speaking:"(b)"+escape(e[4]),silent:"(a)"+escape(e[4]),content:function(e){return e.replace(/\\n/g,"<br>").replace(/\[(\/?)b\]/g,"<$1b>").replace(/\[(\/?)i\]/g,"<$1i>").replace(/\[(\/?)del\]/g,"<$1del>").replace(/\[(\/?)u\]/g,"<$1ins>").replace(/\[(\/?)sub\]/g,"<$1sub>").replace(/\[(\/?)sup\]/g,"<$1sup>").replace(/\[m=([#a-zA-Z0-9]+)\]/g,'<m a="$1">').replace(/\[(\/?)m\]/g,"<$1m>").replace(/\[c=?([#a-zA-Z0-9]+)\]/g,'<c a="$1">').replace(/\[\/c\]/g,"</c>")}(ie(ae(se(e[5])))),side:e[6],sound:escape(e[7]),type:e[8],snddelay:e[10],objection:e[11],evidence:e[12],flip:e[13],flash:e[14],color:e[15],isnew:!0},n=0;n<this.chars.length;n++)if(this.chars[n].name==e[3]){t.character=n;break}t.character==this.charID&&function(){document.getElementById("client_inputbox").value="",u&&(document.getElementById("button_effect_"+u).className="client_button",u=0);h&&(document.getElementById("button_"+h).className="client_button",h=0)}(),de.say(t)}}},{key:"handleCT",value:function(e){var t=document.getElementById("client_ooclog");t.innerHTML+=ae(se(e[1]))+": "+ae(se(e[2]))+"\r\n",t.scrollTop>t.scrollHeight-60&&(t.scrollTop=t.scrollHeight)}},{key:"handleMC",value:function(e){var t=de.music;(t.pause(),t.src=d+e[1],t.play(),e[2]>=0)?S(this.chars[e[2]].name+" changed music to "+e[1]):S("The music was changed to "+e[1])}},{key:"handleRMC",value:function(e){de.music.pause(),de.music=new Audio(this.musicList[e[1]]);var t=de.music;t.totime=e[1],t.offset=(new Date).getTime()/1e3,t.addEventListener("loadedmetadata",function(){t.currentTime+=parseFloat(t.totime+((new Date).getTime()/1e3-t.offset)).toFixed(3),t.play()},!1)}},{key:"handleCI",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Character "+e[1],this.serv.send("AN#"+(e[1]/10+1)+"#%");for(var t=2;t<e.length-1;t++)if(t%2==0){var n=e[t].split("&");this.chars[e[t-1]]={name:n[0],desc:n[1],evidence:n[3],icon:l+"characters/"+escape(n[0])+"/char_icon.png"}}}},{key:"handleSC",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Characters";for(var t=1;t<e.length-1;t++){var n=e[t].split("&");this.chars[t-1]={name:n[0],desc:n[1],evidence:n[3],icon:l+"characters/"+escape(n[0])+"/char_icon.png"}}this.serv.send("RM#%")}},{key:"handleEI",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Evidence "+e[1],this.serv.send("RM#%")}},{key:"handleLE",value:function(e){this.evidences=[];for(var t=1;t<e.length-1;t++){var n=e[t].split("&");this.evidences[t-1]={name:ie(ae(se(n[0]))),desc:ie(ae(se(n[1]))),filename:escape(n[2]),icon:l+"evidence/"+escape(n[2])}}var i=document.getElementById("evidences");i.innerHTML="";for(var c=1;c<=this.evidences.length;c++)i.innerHTML+='<img src="'+this.evidences[c-1].icon+'" id="evi_'+c+'" alt="'+this.evidences[c-1].name+'" class="client_button" onclick="pickevidence('+c+')">'}},{key:"handleEM",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Music "+e[1],this.serv.send("AM#"+(e[1]/10+1)+"#%");for(var t=document.getElementById("client_musiclist"),n=2;n<e.length-1;n++)if(n%2==0){var i=document.createElement("OPTION");i.text=e[n],t.options.add(i)}}},{key:"handleSM",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Music ";for(var t=document.getElementById("client_musiclist"),n=!1,i=1;i<e.length-1;i++)if(/\.(?:wav|mp3|mp4|ogg|mid)$/i.test(e[i])&&!n&&(n=!0),n){var c=document.createElement("OPTION");c.text=e[i],t.options.add(c)}else{var s=document.createElement("SPAN");s.className="location-box",s.textContent=e[i],s.onclick=function(){I(this)},document.getElementById("areas").appendChild(s)}var o=document.getElementById("areas"),a=document.createElement("OPTION");a.text=o.lastChild.textContent,t.insertBefore(a,t.firstChild),o.removeChild(o.lastChild),this.serv.send("RD#%")}},{key:"handlemusic",value:function(e){for(var t=0;t<e.length/2;t++)this.musicList[e[2*t]]=e[2*t+1]}},{key:"handleDONE",value:function(e){document.getElementById("client_loading").style.display="none",document.getElementById("client_charselect").style.display="block"}},{key:"handleBN",value:function(e){de.bgname=escape(e[1]);var t=Z("bg_select",escape(e[1]));document.getElementById("bg_select").selectedIndex=t,J(),0==t&&(document.getElementById("bg_filename").value=e[1]),document.getElementById("bg_preview").src=l+"background/"+escape(e[1])+"/defenseempty.png",-1==this.charID?M("jud"):M(this.chars[this.charID].side)}},{key:"handleNBG",value:function(e){}},{key:"handleHP",value:function(e){1==e[1]?document.getElementById("client_defense_hp").style.clip="rect(0px,"+90*e[2]/10+"px,20px,0px)":document.getElementById("client_prosecutor_hp").style.clip="rect(0px,"+90*e[2]/10+"px,20px,0px)"}},{key:"handleRT",value:function(e){"testimony1"==e[1]?this.testimonyID=1:this.testimonyID=2,de.initTestimonyUpdater()}},{key:"handleZZ",value:function(e){var t=document.getElementById("client_ooclog");t.innerHTML+="$Alert: "+ae(se(e[1]))+"\r\n",t.scrollTop>t.scrollHeight-60&&(t.scrollTop=t.scrollHeight)}},{key:"handleHP",value:function(e){1==e[1]?document.getElementById("client_defense_hp").style.clip="rect(0px,"+90*e[2]/10+"px,20px,0px)":document.getElementById("client_prosecutor_hp").style.clip="rect(0px,"+90*e[2]/10+"px,20px,0px)"}},{key:"handleID",value:function(e){this.playerID=e[1]}},{key:"handlePN",value:function(e){this.serv.send("askchaa#%")}},{key:"handleSI",value:function(e){r?this.serv.send("askchar2#%"):this.serv.send("RC#%")}},{key:"handleCharsCheck",value:function(e){document.getElementById("client_chartable").innerHTML="";for(var t=0;t<this.chars.length;t++){if(t%8==0)var n=document.createElement("TR");var i=document.createElement("TD"),c=void 0,s=this.chars[t].icon;c="-1"==e[t+1]?" dark":"",i.innerHTML="<img class='demothing"+c+"' id='demo_"+t+"' src='"+s+"' alt='"+this.chars[t].name+"' onclick='pickchar("+t+")' onerror='demoError(this);'>",n.appendChild(i),t%8==0&&document.getElementById("client_chartable").appendChild(n)}}},{key:"handlePV",value:function(e){this.charID=e[3],document.getElementById("client_charselect").style.display="none";var t=this.me(),n=this.emotes,i=new XMLHttpRequest;document.getElementById("client_emo").innerHTML="",i.open("GET",l+"characters/"+escape(this.me().name)+"/char.ini",!0),i.responseType="text",i.onload=function(e){if(200==this.status){var i=this.responseText,c=f.parse(i);t.side=c.Options.side,V(t.side);for(var s=1;s<c.Emotions.number;s++){var o=c.Emotions[s].split("#"),a="0",d="0";void 0!==c.SoundN&&(a=c.SoundN[s]),void 0!==c.SoundT&&(d=c.SoundT[s]),n[s]={desc:o[0],speaking:o[1],silent:o[2],zoom:o[3],sfx:a,sfxdelay:d,button_off:l+"characters/"+escape(t.name)+"/emotions/button"+s+"_off.png",button_on:l+"characters/"+escape(t.name)+"/emotions/button"+s+"_on.png"},document.getElementById("client_emo").innerHTML+="<img src='"+n[s].button_off+"' id='emo_"+s+"' alt='"+n[s].desc+"' class='client_button' onclick='pickemotion("+s+")'>"}R(1)}},i.send()}}]),e}(),p=function(){function e(){c(this,e),this.textnow="",this.chatmsg={isnew:!1,content:"",objection:"0",sound:"",startpreanim:!1,startspeaking:!1,side:null,color:"0",snddelay:0,preanimdelay:0},this.blip=new Audio(l+"sounds/general/sfx-blipmale.wav"),this.blip.volume=.5,this.blipChannels=new Array(6);for(var t=0;t<this.blipChannels.length;t++)this.blipChannels[t]=new Audio(l+"sounds/general/sfx-blipmale.wav"),this.blipChannels[t].volume=.5;this.currentBlipChannel=0,this.sfxaudio=new Audio(l+"sounds/general/sfx-blipmale.wav"),this.sfxplayed=0,this.music=new Audio,this.music.play(),this.updater=null,this.testimonyUpdater=null,this.bgname="gs4",this.testimonyTimer=0,this.shoutTimer=0,this.textTimer=0,this._animating=!1}return i(e,[{key:"isAnimating",value:function(){return this._animating}},{key:"setBlipVolume",value:function(e){for(var t=0;t<this.blipChannels.length;t++)this.blipChannels[t].volume=e}},{key:"bgFolder",value:function(){return l+"background/"+this.bgname+"/"}},{key:"say",value:function(e){this.chatmsg=e,S(e.content,e.nameplate),M(e.side),this.textnow="",this.sfxplayed=0,this.textTimer=0,this._animating=!0,clearTimeout(this.updater),"-"!=e.preanim?e.preanimdelay=this.getAnimLength(l+"characters/"+escape(e.name)+"/"+e.preanim+".gif",this.initUpdater):this.initUpdater(0)}},{key:"initUpdater",value:function(e){de.chatmsg.preanimdelay=parseInt(e),de.updater=setTimeout(function(){return de.updateText()},60)}},{key:"initTestimonyUpdater",value:function(){var e=this;if(le.testimonyID>0){var t="";1==le.testimonyID?t="witnesstestimony":2==le.testimonyID&&(t="crossexamination"),new Audio(le.resources[t].sfx).play(),this.testimonyTimer=0,document.getElementById("client_testimony").src=le.resources[t].src,this.testimonyUpdater=setTimeout(function(){return e.updateTestimony()},60)}}},{key:"getAnimLength",value:function(e,t,n){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.addEventListener("load",function(){var e=gify.getInfo(i.response);console.log(e.duration),t(e.duration,n)}),i.send()}},{key:"updateTestimony",value:function(){var e=this;this.testimonyTimer=this.testimonyTimer+60,1==le.testimonyID?this.testimonyTimer>=le.resources.witnesstestimony.duration?this.disposeTestimony():this.testimonyUpdater=setTimeout(function(){return e.updateTestimony()},60):2==le.testimonyID?this.testimonyTimer>=le.resources.crossexamination.duration?this.disposeTestimony():this.testimonyUpdater=setTimeout(function(){return e.updateTestimony()},60):this.disposeTestimony()}},{key:"disposeTestimony",value:function(){le.testimonyID=0,this.testimonyTimer=0,document.getElementById("client_testimony").src="misc/placeholder.gif",clearTimeout(this.testimonyUpdater)}},{key:"updateText",value:function(){var e=this;if(1==this.chatmsg.flip?document.getElementById("client_char").style.transform="scaleX(-1)":document.getElementById("client_char").style.transform="scaleX(1)",this._animating&&(this.updater=setTimeout(function(){return e.updateText()},60)),this.chatmsg.isnew){document.getElementById("client_background").style.backgroundColor="transparent",document.getElementById("client_name").style.display="none",document.getElementById("client_chat").style.display="none",document.getElementById("client_evi").style.opacity="0",document.getElementById("client_evi").style.height="0%";var t={1:"holdit",2:"objection",3:"takethat"}[this.chatmsg.objection];void 0!==t?(document.getElementById("client_shout").src=le.resources[t].src,new Audio(l+"/characters/"+this.chatmsg.name+"/"+t+".wav").play(),this.shoutTimer=850):this.shoutTimer=0,this.chatmsg.isnew=!1,this.chatmsg.startpreanim=!0}if(this.textTimer>=this.shoutTimer&&this.chatmsg.startpreanim)2==this.chatmsg.flash?(this.sfxaudio.pause(),this.sfxplayed=1,this.sfxaudio.src=l+"sounds/general/sfx-stab.wav",this.sfxaudio.play(),$("#client_gamewindow").effect("shake",{direction:"up"})):1==this.chatmsg.flash&&(document.getElementById("client_background").style.backgroundColor="white",this.sfxaudio.pause(),this.sfxplayed=1,this.sfxaudio.src=l+"sounds/general/sfx-realization.wav",this.sfxaudio.play(),$("#client_gamewindow").effect("pulsate")),this.chatmsg.preanimdelay>0&&(document.getElementById("client_shout").src="misc/placeholder.gif",M(this.chatmsg.side),document.getElementById("client_char").src=l+"characters/"+escape(this.chatmsg.name)+"/"+this.chatmsg.preanim+".gif"),this.chatmsg.startpreanim=!1,this.chatmsg.startspeaking=!0;else if(this.textTimer>=this.shoutTimer+this.chatmsg.preanimdelay&&!this.chatmsg.startpreanim)if(this.chatmsg.startspeaking){this.chatmsg.evidence>0&&(document.getElementById("client_evi").style.backgroundImage="url('"+le.evidences[this.chatmsg.evidence-1].icon+"')","def"==this.chatmsg.side?(document.getElementById("client_evi").style.right="1.5em",document.getElementById("client_evi").style.left="initial",$("#client_evi").animate({height:"30%",opacity:1},250)):(document.getElementById("client_evi").style.right="initial",document.getElementById("client_evi").style.left="1.5em",$("#client_evi").animate({height:"30%",opacity:1},250))),$("#client_name").toggle("fade"),$("#client_chat").toggle("drop",{direction:"down"}),0==this.chatmsg.preanimdelay&&(document.getElementById("client_shout").src="misc/placeholder.gif",M(this.chatmsg.side)),document.getElementById("client_char").src=l+"characters/"+escape(this.chatmsg.name)+"/"+this.chatmsg.speaking+".gif",document.getElementById("client_name").style.fontSize=.7*document.getElementById("client_name").offsetHeight+"px",document.getElementById("client_chat").style.fontSize=.25*document.getElementById("client_chat").offsetHeight+"px",document.getElementById("client_name").innerHTML="<p>"+ie(this.chatmsg.nameplate)+"</p>";var n="color: "+({0:"#ffffff",1:"#00ff00",2:"#ff0000",3:"#ffaa00",4:"#0000ff",5:"#ffff00",6:"#aa00aa"}[this.chatmsg.color]||"#ffffff");document.getElementById("client_inner_chat").style=n,this.chatmsg.startspeaking=!1,this.textnow==this.chatmsg.content&&(document.getElementById("client_char").src=l+"characters/"+escape(this.chatmsg.name)+"/"+this.chatmsg.silent+".gif",this._animating=!1,clearTimeout(this.updater))}else this.textnow!=this.chatmsg.content&&(" "!=this.chatmsg.content.charAt(this.textnow.length)&&(this.blipChannels[this.currentBlipChannel].play(),this.currentBlipChannel++,this.currentBlipChannel%=this.blipChannels.length),this.textnow=this.chatmsg.content.substring(0,this.textnow.length+1),document.getElementById("client_inner_chat").innerHTML=this.textnow,this.textnow==this.chatmsg.content&&(this.textTimer=0,this._animating=!1,document.getElementById("client_char").src=l+"characters/"+escape(this.chatmsg.name)+"/"+this.chatmsg.silent+".gif",clearTimeout(this.updater)));!this.sfxplayed&&this.chatmsg.snddelay+this.shoutTimer>=this.textTimer&&(this.sfxaudio.pause(),this.sfxplayed=1,"0"!=this.chatmsg.sound&&"1"!=this.chatmsg.sound&&(this.sfxaudio.src=l+"sounds/general/"+escape(this.chatmsg.sound)+".wav",this.sfxaudio.play())),this.textTimer=this.textTimer+60}}]),e}(),f=function(){function e(){c(this,e)}return i(e,null,[{key:"parse",value:function(e){var t={section:/^\s*\[\s*([^\]]*)\s*\]\s*$/,param:/^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/,comment:/^\s*;.*$/},n={},i=null;return e.split(/\r\n|\r|\n/).forEach(function(e){if(!t.comment.test(e)&&0!=e.length)if(t.param.test(e)){var c=e.match(t.param);i?n[i][c[1]]=c[2]:n[c[1]]=c[2]}else if(t.section.test(e)){var s=e.match(t.section);n[s[1]]={},i=s[1]}}),n}}]),e}();function v(e){13==e.keyCode&&(le.sendOOC(document.getElementById("client_oocinputbox").value),document.getElementById("client_oocinputbox").value="")}function _(e){if(13==e.keyCode){var t=le.me(),n=le.myEmote(),i=le.myEvidence(),c=le.flip?1:0,s=document.getElementById("textcolor").value,o="0",a="0";document.getElementById("sendsfx").checked&&(o=n.sfx,a=n.sfxdelay),le.sendIC(n.speaking,t.name,n.silent,document.getElementById("client_inputbox").value,t.side,o,n.zoom,a,h,i,c,u,s)}}function E(e){var t=document.getElementById("client_musiclist").value;le.sendMusicChange(t)}function I(e){var t=e.textContent;le.sendMusicChange(t)}function b(){de.music.volume=document.getElementById("client_mvolume").value/100}function B(){de.sfxaudio.volume=document.getElementById("client_svolume").value/100}function k(){de.setBlipVolume(document.getElementById("client_bvolume").value/100)}function w(e){le.sendLeaveRoom(),document.getElementById("client_charselect").style.display="block",document.getElementById("client_emo").innerHTML=""}function x(e){return e.onerror="",e.src="misc/placeholder.gif",!0}function C(e){return e.onerror="",e.src="/misc/placeholder.png",!0}function T(e,t,n){var i=new XMLHttpRequest;i.onreadystatechange=function(){4==this.readyState&&200==this.status?t(!0,n,e):t(!1,n,e)},i.open("GET",e,!0),i.send()}function M(e){var t,n=de.bgFolder();switch(document.getElementById("client_fg").style.display="none",document.getElementById("client_bench").style.display="none",e){case"def":document.getElementById("client_court").src=n+"defenseempty.png",document.getElementById("client_bench").style.display="block",T(n+"defensedesk.png",O,e),t="defense";break;case"pro":document.getElementById("client_court").src=n+"prosecutorempty.png",document.getElementById("client_bench").style.display="block",T(n+"defensedesk.png",O,e),t="prosecution";break;case"hld":document.getElementById("client_court").src=n+"helperstand.png",t="defense";break;case"hlp":document.getElementById("client_court").src=n+"prohelperstand.png",t="prosecution";break;case"wit":document.getElementById("client_court").src=n+"witnessempty.png",document.getElementById("client_bench").style.display="block",document.getElementById("client_bench").src=n+"estrado.png",t="prosecution";break;case"jud":document.getElementById("client_court").src=n+"judgestand.png",t="prosecution"}5==de.chatmsg.type&&(document.getElementById("client_bench").style.display="none",document.getElementById("client_court").src=l+"themes/default/"+t+"_speedlines.gif")}function O(e,t){var n=de.bgFolder();document.getElementById("client_bench").src="def"==t?e?n+"defensedesk.png":n+"bancodefensa.png":e?n+"prosecutiondesk.png":n+"bancoacusacion.png"}function N(){le.cleanup(),(le=new y(o))&&(a="join",document.getElementById("client_error").style.display="none")}function L(){le.joinServer()}function S(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Date,i=document.createElement("p"),c=document.createElement("span");if(c.id="iclog_name",c.appendChild(document.createTextNode(t)),i.appendChild(c),i.appendChild(document.createTextNode(e)),g.getMinutes()!==n.getMinutes()){var s=document.createElement("span");s.id="iclog_time",s.innerText=n.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),i.appendChild(s)}var o=document.getElementById("client_log");o.appendChild(i),o.scrollTop>o.scrollHeight-600&&(o.scrollTop=o.scrollHeight),g=new Date}function D(e){e<1e3?le.sendCharacter(e):(document.getElementById("client_charselect").style.display="none",document.getElementById("client_inputbox").style.display="none",document.getElementById("client_emo").style.display="none")}function R(e){-1!=le.selectedEmote&&(document.getElementById("emo_"+le.selectedEmote).src=le.myEmote().button_off),le.selectedEmote=e,document.getElementById("emo_"+e).src=le.myEmote().button_on}function A(e){if(le.selectedEvidence!=e){le.selectedEvidence>0&&(document.getElementById("evi_"+le.selectedEvidence).className="client_button"),document.getElementById("evi_"+e).className="client_button dark",le.selectedEvidence=e,document.getElementById("evi_name").value=le.evidences[e-1].name,document.getElementById("evi_desc").value=le.evidences[e-1].desc;var t=Z("evi_select",le.evidences[e-1].filename);document.getElementById("evi_select").selectedIndex=t,0==t&&(document.getElementById("evi_filename").value=le.evidences[e-1].filename),F(),document.getElementById("evi_add").className="client_button hover_button inactive",document.getElementById("evi_edit").className="client_button hover_button",document.getElementById("evi_cancel").className="client_button hover_button",document.getElementById("evi_del").className="client_button hover_button"}else U()}function H(){var e=document.getElementById("evi_select");le.sendPE(document.getElementById("evi_name").value,document.getElementById("evi_desc").value,0==e.selectedIndex?document.getElementById("evi_filename").value:e.options[e.selectedIndex].text),U()}function P(){var e=document.getElementById("evi_select"),t=parseInt(le.selectedEvidence)-1;le.sendEE(t,document.getElementById("evi_name").value,document.getElementById("evi_desc").value,0==e.selectedIndex?document.getElementById("evi_filename").value:e.options[e.selectedIndex].text),U()}function j(){var e=parseInt(le.selectedEvidence)-1;le.sendDE(e),U()}function U(){le.selectedEvidence>0&&(document.getElementById("evi_"+le.selectedEvidence).className="client_button"),le.selectedEvidence=0,document.getElementById("evi_select").selectedIndex=0,F(),document.getElementById("evi_filename").value="",document.getElementById("evi_name").value="",document.getElementById("evi_desc").value="",document.getElementById("evi_icon").style.backgroundImage="url('misc/empty.png')",document.getElementById("evi_add").className="client_button hover_button",document.getElementById("evi_edit").className="client_button hover_button inactive",document.getElementById("evi_cancel").className="client_button hover_button inactive",document.getElementById("evi_del").className="client_button hover_button inactive"}function Z(e,t){for(var n=document.getElementById(e),i=1;i<n.length;++i)if(n.options[i].value==t)return i;return 0}function F(){var e=document.getElementById("evi_select"),t=document.getElementById("evi_filename"),n=document.getElementById("evi_icon");0==e.selectedIndex?(t.style.display="initial",n.style.backgroundImage="url('"+l+"evidence/"+t.value+"')"):(t.style.display="none",n.style.backgroundImage="url('"+l+"evidence/"+e.value+"')")}function V(e){"jud"==e?(document.getElementById("menu_wt").style.display="inline-table",document.getElementById("menu_ce").style.display="inline-table"):(document.getElementById("menu_wt").style.display="none",document.getElementById("menu_ce").style.display="none");for(var t=0,n=document.getElementById("role_select").options;t<n.length;t++)if(e==n[t].value)return void(n.selectedIndex=t)}function X(){var e="",t=document.getElementById("bg_select"),n=document.getElementById("bg_command").value;e=0==t.selectedIndex?document.getElementById("bg_filename").value:t.value,le.sendOOC("/"+n.replace("$1",e))}function G(){var e=document.getElementById("role_select"),t=document.getElementById("role_command").value;le.sendOOC("/"+t.replace("$1",e.value)),V(e.value)}function z(){le.sendOOC("/"+document.getElementById("randomchar_command").value)}function q(){le.sendZZ("")}function K(){le.sendRT("testimony1")}function W(){le.sendRT("testimony2")}function J(){var e=document.getElementById("bg_select"),t=document.getElementById("bg_filename"),n=document.getElementById("bg_preview");0==e.selectedIndex?(t.style.display="initial",n.src=l+"background/"+t.value+"/defenseempty.png"):(t.style.display="none",n.src=l+"background/"+e.value+"/defenseempty.png")}function Q(e){e==u?(document.getElementById("button_effect_"+e).className="client_button",u=0):(document.getElementById("button_effect_"+e).className="client_button dark",u&&(document.getElementById("button_effect_"+u).className="client_button"),u=e)}function Y(){le.flip?document.getElementById("button_flip").className="client_button":document.getElementById("button_flip").className="client_button dark",le.flip=!le.flip}function ee(){le.presentable?document.getElementById("button_present").className="client_button":document.getElementById("button_present").className="client_button dark",le.presentable=!le.presentable}function te(e){e!=m&&(document.getElementById("menu_"+e).className="menu_icon active",document.getElementById("content_"+e).className="menu_content active",document.getElementById("menu_"+m).className="menu_icon",document.getElementById("content_"+m).className="menu_content",m=e)}function ne(e){e==h?(document.getElementById("button_"+e).className="client_button",h=0):(document.getElementById("button_"+e).className="client_button dark",h&&(document.getElementById("button_"+h).className="client_button"),h=e)}function ie(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function ce(e){return e.replace(/#/g,"<pound>").replace(/&/g,"<and>").replace(/%/g,"<percent>").replace(/\$/g,"<dollar>")}function se(e){return e.replace(/<pound>/g,"#").replace(/<and>/g,"&").replace(/<percent>/g,"%").replace(/<dollar>/g,"$")}function oe(e){var t=document.getElementById("client_encoding").value;if("unicode"==t)return e.replace(/[^\0-~]/g,function(e){return"\\u"+("000"+e.charCodeAt().toString(16)).slice(-4)});if("utf16"==t){for(var n=new ArrayBuffer(2*e.length),i=new Uint16Array(n),c=0,s=e.length;c<s;c++)i[c]=e.charCodeAt(c);return String(i)}return e}function ae(e){var t=document.getElementById("client_decoding").value;return"unicode"==t?e.replace(/\\u([\d\w]{1,})/gi,function(e,t){return String.fromCharCode(parseInt(t,16))}):"utf16"==t?String.fromCharCode.apply(null,new Uint16Array(e.split(","))):e}window.onOOCEnter=v,window.onEnter=_,window.musiclist_click=E,window.area_click=I,window.changeMusicVolume=b,window.changeSFXVolume=B,window.changeBlipVolume=k,window.changeCharacter=w,window.imgError=x,window.demoError=C,window.ReconnectButton=N,window.RetryButton=L,window.pickchar=D,window.pickemotion=R,window.pickevidence=A,window.addevidence=H,window.editevidence=P,window.delevidence=j,window.cancelevidence=U,window.getIndexFromSelect=Z,window.updateEvidenceIcon=F,window.updateActionCommands=V,window.changeBackgroundOOC=X,window.changeRoleOOC=G,window.randomCharacterOOC=z,window.callmod=q,window.initwt=K,window.initce=W,window.updateBackgroundPreview=J,window.toggleaffect=Q,window.toggleflip=Y,window.togglepresent=ee,window.togglemenu=te,window.toggleshout=ne,void 0===String.prototype.trim&&(String.prototype.trim=function(){return String(this).replace(/^\s+|\s+$/g,"")}),String.prototype.hashCode=function(){var e,t=0;if(0===this.length)return t;for(e=0;e<this.length;e++)t=(t<<5)-t+this.charCodeAt(e),t|=0;return t};var le=new y(o),de=new p;$(document).ready(function(){le.initialObservBBCode(),le.loadResources()})}}); //# sourceMappingURL=client.b.js.map
\ No newline at end of file diff --git a/webAO/client.b.js.map b/webAO/client.b.js.map index d7f3a32..0898258 100644 --- a/webAO/client.b.js.map +++ b/webAO/client.b.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./webAO/client.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","onOOCEnter","onEnter","musiclist_click","area_click","changeMusicVolume","changeSFXVolume","changeBlipVolume","changeCharacter","imgError","demoError","ReconnectButton","RetryButton","pickchar","pickemotion","pickevidence","addevidence","editevidence","delevidence","cancelevidence","getIndexFromSelect","updateEvidenceIcon","changeBackgroundOOC","updateBackgroundPreview","toggleaffect","toggleflip","togglepresent","togglemenu","toggleshout","queryDict","location","search","substr","split","forEach","item","serverIP","ip","AO_HOST","asset","MUSIC_HOST","oldLoading","test","navigator","userAgent","selectedEffect","selectedMenu","selectedShout","lastICMessageTime","Date","Client","address","_this","this","_classCallCheck","serv","WebSocket","onopen","evt","onOpen","onclose","onClose","onmessage","onMessage","onerror","onError","flip","presentable","playerID","charID","chars","emotes","evidences","selectedEmote","selectedEvidence","checkUpdater","musicList","handlers","MS","args","handleMS","CT","handleCT","MC","handleMC","RMC","handleRMC","CI","handleCI","SC","handleSC","EI","handleEI","LE","handleLE","EM","handleEM","SM","handleSM","music","handlemusic","DONE","handleDONE","BN","handleBN","NBG","handleNBG","HP","handleHP","ID","handleID","PN","handlePN","SI","handleSI","CharsCheck","handleCharsCheck","PV","handlePV","CHECK","_lastTimeICReceived","message","send","escapeChat","encodeChat","speaking","silent","side","ssfxname","zoom","ssfxdelay","objection","evidence","flash","color","desc","img","id","track","_this2","hashCode","setInterval","sendCheck","evidence_select","document","getElementById","add","Option","evidence_arr","length","background_select","background_arr","target","MutationObserver","mutations","mutation","children","addedNodes","node","tagName","style","getAttribute","hasAttribute","backgroundColor","observe","attributes","childList","character","song","e","display","client","joinServer","console","error","reason","code","textContent","cleanup","msg","data","debug","header","handler","warn","close","clearInterval","viewport","chatmsg","content","innerHTML","preanim","escape","nameplate","estring","replace","decodeBBCode","escapeHtml","decodeChat","unescapeChat","sound","type","snddelay","isnew","className","resetICParams","say","oocLog","scrollTop","scrollHeight","pause","src","play","appendICLog","Audio","totime","offset","getTime","addEventListener","currentTime","parseFloat","toFixed","chargs","icon","arg","filename","evidence_box","hmusiclist","newentry","createElement","text","options","flagAudio","newarea","onclick","appendChild","area_box","audio_title","lastChild","insertBefore","firstChild","removeChild","bgname","bg_index","selectedIndex","clip","tr","td","icon_chosen","thispick","changeBackground","me","xhr","XMLHttpRequest","open","responseType","onload","status","linifile","responseText","pinifile","INI","parse","Options","Emotions","number","emoteinfo","esfx","esfxd","SoundN","SoundT","sfx","sfxdelay","button_off","button_on","Viewport","textnow","startpreanim","startspeaking","preanimdelay","blip","volume","blipChannels","Array","currentBlipChannel","sfxaudio","sfxplayed","updater","shoutTimer","textTimer","_animating","clearTimeout","getAnimLength","initUpdater","animdelay","parseInt","setTimeout","updateText","callback","request","arr","Uint8Array","response","duration","String","fromCharCode","delay","_this3","transform","opacity","height","shout","1","2","3","$","effect","direction","backgroundImage","right","left","animate","toggle","fontSize","offsetHeight","stylecolor","0","4","5","6","charAt","substring","regex","section","param","comment","line","match","event","keyCode","sendOOC","mychar","myemo","myEmote","myevi","myEvidence","myflip","mycolor","checked","sendIC","playtrack","sendMusicChange","el","setBlipVolume","sendLeaveRoom","image","ImageExist","url","Image","position","standname","bgfolder","bgFolder","toadd","arguments","undefined","time","entry","nameField","createTextNode","getMinutes","timeStamp","innerText","toLocaleTimeString","hour","minute","clientLog","ccharacter","sendCharacter","emo","icon_id","sendPE","sendEE","sendDE","select_box","select_element","evidence_filename","evidence_iconbox","bg_command","background_filename","background_preview","menu","unsafe","selectedEncoding","ch","charCodeAt","toString","slice","buffer","ArrayBuffer","result","Uint16Array","strLen","selectedDecoding","group","apply","window","trim","hash","ready","initialObservBBCode","loadResources"],"mappings":"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","file":"client.b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\r\n * Glorious webAO\r\n * made by sD, refactored by oldmud0\r\n * credits to aleks for original idea and source\r\n*/\r\n\r\nlet queryDict = {};\r\nlocation.search.substr(1).split(\"&\").forEach(function(item) {\r\n\tqueryDict[item.split(\"=\")[0]] = item.split(\"=\")[1]\r\n});\r\n\r\n/* Server magic */\r\n\r\nconst serverIP = queryDict.ip;\r\nlet mode = queryDict.mode;\r\n\r\nconst AO_HOST = queryDict.asset || \"http://assets.aceattorneyonline.com/base/\";\r\nconst MUSIC_HOST = AO_HOST + \"sounds/music/\";\r\nconst BAR_WIDTH = 90;\r\nconst BAR_HEIGHT = 20;\r\nconst CHAR_SELECT_WIDTH = 8;\r\nconst UPDATE_INTERVAL = 65;\r\n\r\nlet oldLoading = false;\r\nif (/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) {\r\n\toldLoading = true;\r\n}\r\n\r\nlet selectedEffect = 0;\r\nlet selectedMenu = 1;\r\nlet selectedShout = 0;\r\nlet lastICMessageTime = new Date(0);\r\n\r\nclass Client {\r\n\tconstructor(address) {\r\n\t\tthis.serv = new WebSocket(\"ws://\" + address);\r\n\r\n\t\tthis.serv.onopen = (evt) => this.onOpen(evt);\r\n\t\tthis.serv.onclose = (evt) => this.onClose(evt);\r\n\t\tthis.serv.onmessage = (evt) => this.onMessage(evt);\r\n\t\tthis.serv.onerror = (evt) => this.onError(evt);\r\n\t\t\r\n\t\tthis.flip = false;\r\n\t\tthis.presentable = false;\r\n\r\n\t\tthis.playerID = 1;\r\n\t\tthis.charID = -1;\r\n\r\n\t\tthis.chars = [];\r\n\t\tthis.emotes = [];\t\t\r\n\t\tthis.evidences = [];\r\n\r\n\t\tthis.selectedEmote = -1;\r\n\t\tthis.selectedEvidence = 0;\r\n\r\n\t\tthis.checkUpdater = null;\r\n\r\n\t\t// Only used for RMC/`music` packets, not EM/SM/MC packets.\r\n\t\tthis.musicList = Object();\r\n\r\n\t\tthis.handlers = {\r\n\t\t\t\"MS\": (args) => this.handleMS(args),\r\n\t\t\t\"CT\": (args) => this.handleCT(args),\r\n\t\t\t\"MC\": (args) => this.handleMC(args),\r\n\t\t\t\"RMC\": (args) => this.handleRMC(args),\r\n\t\t\t\"CI\": (args) => this.handleCI(args),\r\n\t\t\t\"SC\": (args) => this.handleSC(args),\r\n\t\t\t\"EI\": (args) => this.handleEI(args),\r\n\t\t\t\"LE\": (args) => this.handleLE(args),\r\n\t\t\t\"EM\": (args) => this.handleEM(args),\r\n\t\t\t\"SM\": (args) => this.handleSM(args),\r\n\t\t\t\"music\": (args) => this.handlemusic(args),\r\n\t\t\t\"DONE\": (args) => this.handleDONE(args),\r\n\t\t\t\"BN\": (args) => this.handleBN(args),\r\n\t\t\t\"NBG\": (args) => this.handleNBG(args),\r\n\t\t\t\"HP\": (args) => this.handleHP(args),\r\n\t\t\t\"ID\": (args) => this.handleID(args),\r\n\t\t\t\"PN\": (args) => this.handlePN(args),\r\n\t\t\t\"SI\": (args) => this.handleSI(args),\r\n\t\t\t\"CharsCheck\": (args) => this.handleCharsCheck(args),\r\n\t\t\t\"PV\": (args) => this.handlePV(args),\r\n\t\t\t\"CHECK\": (args) => {}\r\n\t\t}\r\n\r\n\t\tthis._lastTimeICReceived = new Date(0);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current player's character.\r\n\t */\r\n\tme() {\r\n\t\treturn this.chars[this.charID];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the player's currently selected emote.\r\n\t */\r\n\tmyEmote() {\r\n\t\treturn this.emotes[this.selectedEmote];\r\n\t}\r\n\t\r\n\t/**\r\n\t * Gets the player's currently selected evidence if presentable.\r\n\t */\r\n\tmyEvidence() {\r\n\t\treturn (this.presentable)? this.selectedEvidence : 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Sends an out-of-character chat message.\r\n\t * @param {string} message the message to send\r\n\t */\r\n\tsendOOC(message) {\r\n\t\tthis.serv.send(`CT#web${this.playerID}#${escapeChat(encodeChat(message))}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends an in-character chat message.\r\n\t * @param {string} speaking who is speaking\r\n\t * @param {string} name the name of the current character\r\n\t * @param {string} silent whether or not it's silent\r\n\t * @param {string} message the message to be sent\r\n\t * @param {string} side the name of the side in the background\r\n\t * @param {string} ssfxname the name of the sound effect\r\n\t * @param {string} zoom whether or not to zoom\r\n\t * @param {string} ssfxdelay the delay (in milliseconds) to play the sound effect\r\n\t * @param {string} objection the number of the shout to play\r\n\t */\r\n\tsendIC(speaking, name, silent, message, side, ssfxname, zoom, ssfxdelay, objection, evidence, flip, flash, color) {\r\n\t\tthis.serv.send(\r\n\t\t\t`MS#chat#${speaking}#${name}#${silent}` +\r\n\t\t\t`#${escapeChat(encodeChat(message))}#${side}#${ssfxname}#${zoom}` +\r\n\t\t\t`#${this.charID}#${ssfxdelay}#${selectedShout}#${evidence}#${flip}#${flash}#${color}#%`\r\n\t\t);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sends add evidence command.\r\n\t * @param {string} evidence name\r\n\t * @param {string} evidence description\r\n\t * @param {string} evidence image filename\r\n\t */\r\n\tsendPE(name, desc, img) {\r\n\t\tthis.serv.send(`PE#${escapeChat(encodeChat(name))}#${escapeChat(encodeChat(desc))}#${img}#%`);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sends edit evidence command.\r\n\t * @param {string} evidence id\r\n\t * @param {string} evidence name\r\n\t * @param {string} evidence description\r\n\t * @param {string} evidence image filename\r\n\t */\r\n\tsendEE(id, name, desc, img) {\r\n\t\tthis.serv.send(`EE#${id}#${escapeChat(encodeChat(name))}#${escapeChat(encodeChat(desc))}#${img}#%`);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sends delete evidence command.\r\n\t * @param {string} evidence id\r\n\t */\r\n\tsendDE(id, name, desc, img) {\r\n\t\tthis.serv.send(`DE#${id}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to change the music to the specified track.\r\n\t * @param {string} track the track ID\r\n\t */\r\n\tsendMusicChange(track) {\r\n\t\tthis.serv.send(`MC#${track}#${this.charID}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to leave the room and free the character slot.\r\n\t * \r\n\t * Note: This packet is undocumented. It is not implemented by\r\n\t * either the AO2 client or tsuserver.\r\n\t */\r\n\tsendLeaveRoom() {\r\n\t\tthis.serv.send(\"FC#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Begins the handshake process by sending an identifier\r\n\t * to the server.\r\n\t */\r\n\tjoinServer() {\r\n\t\tthis.serv.send(`HI#${navigator.userAgent.hashCode()}#%`);\r\n\t\tthis.serv.send(\"ID#webAO#2.4.5#%\");\r\n\t\tthis.checkUpdater = setInterval(() => this.sendCheck(), 5000);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Load game resources.\r\n\t */\r\n\tloadResources() {\r\n\t\t// Load evidence array to select\r\n\t\tvar evidence_select = document.getElementById(\"evi_select\");\r\n\t\tevidence_select.add(new Option(\"Custom\", 0));\r\n\t\tfor(let i = 1; i <= evidence_arr.length; i++) {\r\n\t\t evidence_select.add(new Option(evidence_arr[i - 1]));\r\n\t\t}\t\t\r\n\t\t// Load background array to select\r\n\t\tvar background_select = document.getElementById(\"bg_select\");\r\n\t\tbackground_select.add(new Option(\"Custom\", 0));\r\n\t\tfor(let i = 1; i <= background_arr.length; i++) {\r\n\t\t background_select.add(new Option(background_arr[i - 1]));\r\n\t\t}\r\n\t\t// TODO: Cache some resources\r\n\t\t\r\n\t}\r\n\t\r\n\t/**\r\n\t * Create observer to detect BBCode elements\r\n\t * then manipulate them.\r\n\t */\r\n\tinitialObservBBCode() {\r\n\t\tvar target = document.getElementById(\"client_inner_chat\");\r\n\t\tvar observer = new MutationObserver(function(mutations) {\r\n\t\t mutations.forEach(function(mutation) {\r\n\t\t\tvar children = mutation.addedNodes;\r\n\t\t\tif (children !== null) {\r\n\t\t\t\tchildren.forEach( function(node) {\r\n\t\t\t\t\tif (node.tagName == \"C\") {\r\n\t\t\t\t\t\tnode.style.color = node.getAttribute(\"a\");\r\n\t\t\t\t\t} else if(node.tagName == \"M\"){\r\n\t\t\t\t\t\tif (node.hasAttribute('a')) {\r\n\t\t\t\t\t\t\tnode.style.backgroundColor = node.getAttribute(\"a\");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tnode.style.backgroundColor = \"yellow\";\r\n\t\t\t\t\t\t\tnode.style.color = \"black\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t }); \r\n\t\t});\r\n\t\tvar config = {attributes: true,childList: true};\r\n\t\tobserver.observe(target,config);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to play as a specified character.\r\n\t * @param {number} character the character ID\r\n\t */\r\n\tsendCharacter(character) {\r\n\t\tthis.serv.send(`CC#${this.playerID}#${character}#web#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to select a music track.\r\n\t * @param {number?} song the song to be played\r\n\t */\r\n\tsendMusic(song) {\r\n\t\tthis.serv.send(`MC#${song}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends a keepalive packet.\r\n\t */\r\n\tsendCheck() {\r\n\t\tthis.serv.send(`CH#${this.charID}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when a connection is established to the server.\r\n\t */\r\n\tonOpen(e) {\r\n\t\t// XXX: Why does watching mean just SITTING there and doing nothing?\r\n\t\tif (mode === \"watch\") {\r\n\t\t\tdocument.getElementById(\"client_loading\").style.display = \"none\";\r\n\t\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\t} else {\r\n\t\t\tclient.joinServer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when the connection to the server closes.\r\n\t * @param {CloseEvent} e\r\n\t */\r\n\tonClose(e) {\r\n\t\tconsole.error(`The connection was closed: ${e.reason} (${e.code})`);\r\n\t\tif (e.code !== 1001) {\r\n\t\t\tdocument.getElementById(\"client_error\").style.display = \"block\";\r\n\t\t\tdocument.getElementById(\"error_id\").textContent = e.code;\r\n\t\t\tthis.cleanup();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when a packet is received from the server.\r\n\t * @param {MessageEvent} e\r\n\t */\r\n\tonMessage(e) {\r\n\t\tlet msg = e.data;\r\n\t\tconsole.debug(msg);\r\n\t\tlet lines = msg.split('%');\r\n\t\tlet args = lines[0].split('#');\r\n\t\tlet header = args[0];\r\n\t\tlet handler = this.handlers[header];\r\n\t\tif (typeof handler !== \"undefined\") {\r\n\t\t\thandler(args);\r\n\t\t} else {\r\n\t\t\tconsole.warn(`Invalid packet header ${header}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when an network error occurs.\r\n\t * @param {ErrorEvent} e \r\n\t */\r\n\tonError(e) {\r\n\t\tconsole.error(`A network error occurred: ${e.reason} (${e.code})`);\r\n\t\tdocument.getElementById(\"client_error\").style.display = \"block\";\r\n\t\tdocument.getElementById(\"error_id\").textContent = e.code;\r\n\t\tthis.cleanup();\r\n\t}\r\n\r\n\tcleanup() {\r\n\t\ttry {\r\n\t\t\tthis.serv.close(1001);\r\n\t\t} catch (e) {\r\n\t\t\t// I don't care if this errors\r\n\t\t}\r\n\t\tclearInterval(this.checkUpdater);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an in-character chat message.\r\n\t * @param {*} args packet arguments\r\n\t */\r\n\thandleMS(args) {\r\n\t\t// TODO: this if-statement might be a bug.\r\n\t\tif (args[4] != viewport.chatmsg.content) {\r\n\t\t\tdocument.getElementById(\"client_inner_chat\").innerHTML = \"\";\r\n\t\t\tlet chatmsg = {\r\n\t\t\t\t// pre: escape(args[2]),\r\n\t\t\t\tcharacter: -1, // Will do a linear search\r\n\t\t\t\tpreanim: escape(args[2]), // XXX: why again?\r\n\t\t\t\tnameplate: args[3], // TODO: parse INI to get this info\r\n\t\t\t\tname: args[3],\r\n\t\t\t\tspeaking: \"(b)\" + escape(args[4]),\r\n\t\t\t\tsilent: \"(a)\" + escape(args[4]),\r\n\t\t\t\tcontent: decodeBBCode(escapeHtml(decodeChat(unescapeChat(args[5])))), // Escape HTML tag, Use BBCode Only!\r\n\t\t\t\tside: args[6],\r\n\t\t\t\tsound: escape(args[7]),\r\n\t\t\t\ttype: args[8],\r\n\t\t\t\t// charid: args[9],\r\n\t\t\t\tsnddelay: args[10],\r\n\t\t\t\tobjection: args[11],\r\n\t\t\t\tevidence: args[12],\r\n\t\t\t\tflip: args[13],\r\n\t\t\t\tflash: args[14],\r\n\t\t\t\tcolor: args[15],\r\n\t\t\t\tisnew: true,\r\n\t\t\t};\r\n\r\n\t\t\t// The dreaded linear search...\r\n\t\t\tfor (let i = 0; i < this.chars.length; i++) {\r\n\t\t\t\tif (this.chars[i].name == args[3]) {\r\n\t\t\t\t\tchatmsg.character = i;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (chatmsg.character == this.charID) {\r\n\t\t\t\tresetICParams();\r\n\t\t\t}\r\n\r\n\t\t\tviewport.say(chatmsg);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an out-of-character chat message.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCT(args) {\r\n\t\tconst oocLog = document.getElementById(\"client_ooclog\");\r\n\t\toocLog.innerHTML += `${decodeChat(unescapeChat(args[1]))}: ${decodeChat(unescapeChat(args[2]))}\\r\\n`;\r\n\t\tif (oocLog.scrollTop > oocLog.scrollHeight - 60) {\r\n\t\t\toocLog.scrollTop = oocLog.scrollHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a music change to an arbitrary resource.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleMC(args) {\r\n\t\tconst music = viewport.music;\r\n\t\tmusic.pause();\r\n\t\tmusic.src = MUSIC_HOST + args[1];\r\n\t\tmusic.play();\r\n\t\tif (args[2] >= 0) {\r\n\t\t\tlet musicname = this.chars[args[2]].name;\r\n\t\t\tappendICLog(`${musicname} changed music to ${args[1]}`);\r\n\t\t} else {\r\n\t\t\tappendICLog(`The music was changed to ${args[1]}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a music change to an arbitrary resource, with an offset in seconds.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleRMC(args) {\r\n\t\tviewport.music.pause();\r\n\t\tviewport.music = new Audio(this.musicList[args[1]]);\r\n\t\tconst music = viewport.music;\r\n\t\t// Music offset + drift from song loading\r\n\t\tmusic.totime = args[1];\r\n\t\tmusic.offset = new Date().getTime() / 1000;\r\n\t\tmusic.addEventListener('loadedmetadata', function() {\r\n\t\t\tmusic.currentTime += parseFloat(music.totime + (new Date().getTime() / 1000 - music.offset)).toFixed(3);\r\n\t\t\tmusic.play();\r\n\t\t}, false);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming character information, bundling multiple characters\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCI(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Character \" + args[1];\r\n\t\tthis.serv.send(\"AN#\" + ((args[1] / 10) + 1) + \"#%\");\r\n\t\tfor (let i = 2; i < args.length - 1; i++) {\r\n\t\t\tif (i % 2 == 0) {\r\n\t\t\t\tlet chargs = args[i].split(\"&\");\r\n\t\t\t\tthis.chars[args[i - 1]] = {\r\n\t\t\t\t\t\"name\": chargs[0],\r\n\t\t\t\t\t\"desc\": chargs[1],\r\n\t\t\t\t\t\"evidence\": chargs[3],\r\n\t\t\t\t\t\"icon\": AO_HOST + \"characters/\" + escape(chargs[0]) + \"/char_icon.png\"\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming character information, containing only one character\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSC(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Characters\";\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\tlet chargs = args[i].split(\"&\");\r\n\t\t\tthis.chars[i - 1] = {\r\n\t\t\t\t\"name\": chargs[0],\r\n\t\t\t\t\"desc\": chargs[1],\r\n\t\t\t\t\"evidence\": chargs[3],\r\n\t\t\t\t\"icon\": AO_HOST + \"characters/\" + escape(chargs[0]) + \"/char_icon.png\"\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.serv.send(\"RM#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming evidence information, containing only one evidence\r\n\t * item per packet.\r\n\t * \r\n\t * Mostly unimplemented in webAO.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleEI(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Evidence \" + args[1];\r\n\t\t//serv.send(\"AE#\" + (args[1] + 1) + \"#%\");\r\n\t\tthis.serv.send(\"RM#%\");\r\n\t}\r\n\t\r\n\t/**\r\n\t * Handles incoming evidence list, all evidences at once\r\n\t * item per packet.\r\n\t * \r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleLE(args) {\r\n\t\tthis.evidences = [];\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\tvar arg = args[i].split(\"&\");\r\n\t\t\tthis.evidences[i - 1] = {\r\n\t\t\t\t\"name\": escapeHtml(decodeChat(unescapeChat(arg[0]))),\r\n\t\t\t\t\"desc\": escapeHtml(decodeChat(unescapeChat(arg[1]))),\r\n\t\t\t\t\"filename\": escape(arg[2]),\r\n\t\t\t\t\"icon\": AO_HOST + \"evidence/\" + escape(arg[2])\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar evidence_box = document.getElementById(\"evidences\");\r\n\t\tevidence_box.innerHTML = \"\";\r\n\t\tfor(let i = 1; i <= this.evidences.length; i++){\r\n\t\t\tevidence_box.innerHTML += '<img src=\"' + this.evidences[i - 1].icon + \r\n\t\t\t\t'\" id=\"evi_' + i +'\" alt=\"' + this.evidences[i - 1].name +\r\n\t\t\t\t'\" class=\"client_button\" ' +\r\n\t\t\t\t'onclick=\"pickevidence('+ i +')\">';\t\t\t\t\t\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing multiple entries\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleEM(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Music \" + args[1];\r\n\t\tthis.serv.send(\"AM#\" + ((args[1] / 10) + 1) + \"#%\");\r\n\t\tlet hmusiclist = document.getElementById(\"client_musiclist\");\r\n\t\tfor (let i = 2; i < args.length - 1; i++) {\r\n\t\t\tif (i % 2 == 0) {\r\n\t\t\t\tlet newentry = document.createElement(\"OPTION\");\r\n\t\t\t\tnewentry.text = args[i];\r\n\t\t\t\thmusiclist.options.add(newentry);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing only one entry\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSM(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Music \";\r\n\t\tlet hmusiclist = document.getElementById(\"client_musiclist\"), flagAudio = false;\r\n\t\t\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\t// Check when found the song for the first time\r\n\t\t\tif(/\\.(?:wav|mp3|mp4|ogg|mid)$/i.test(args[i]) && !flagAudio){\r\n\t\t\t\tflagAudio = true;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(flagAudio) {\r\n\t\t\t\t// After reached the audio put everything in the music list\r\n\t\t\t\tlet newentry = document.createElement(\"OPTION\");\r\n\t\t\t\tnewentry.text = args[i];\r\n\t\t\t\thmusiclist.options.add(newentry);\r\n\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\t// Create area button\r\n\t\t\t\tlet newarea = document.createElement(\"SPAN\");\r\n\t\t\t\tnewarea.className = \"location-box\";\r\n\t\t\t\tnewarea.textContent = args[i]; \r\n\t\t\t\tnewarea.onclick = function(){ area_click(this) };\r\n\t\t\t\tdocument.getElementById(\"areas\").appendChild(newarea);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// Move first audio title from area box to music list\r\n\t\tlet area_box = document.getElementById(\"areas\");\r\n\t\tlet audio_title = document.createElement(\"OPTION\");\r\n\t\taudio_title.text = area_box.lastChild.textContent;\r\n\t\thmusiclist.insertBefore(audio_title, hmusiclist.firstChild);\r\n\t\tarea_box.removeChild(area_box.lastChild); // Remove from arae box\r\n\t\t\t\t\r\n\t\tthis.serv.send(\"RD#%\");\t\t\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing all entries\r\n\t * in the same packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandlemusic(args) {\r\n\t\tfor (let i = 0; i < args.length / 2; i++) {\r\n\t\t\tthis.musicList[args[2 * i]] = args[2 * i + 1];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the handshake completion packet, meaning the player\r\n\t * is ready to select a character.\r\n\t * \r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleDONE(args) {\r\n\t\tdocument.getElementById(\"client_loading\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"block\";\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a background change.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleBN(args) {\r\n\t\tviewport.bgname = escape(args[1]);\r\n\t\tlet bg_index = getIndexFromSelect(\"bg_select\", escape(args[1]));\r\n\t\tdocument.getElementById(\"bg_select\").selectedIndex = bg_index;\r\n\t\tupdateBackgroundPreview();\r\n\t\tif(bg_index == 0){\r\n\t\t\tdocument.getElementById(\"bg_filename\").value = args[1];\r\n\t\t}\r\n\t\tdocument.getElementById(\"bg_preview\").src = AO_HOST + 'background/' + escape(args[1]) + \"/defenseempty.png\";\r\n\t\t\t\t\r\n\t}\r\n\r\n\thandleNBG(args) {\r\n\t\t// TODO (set by sD)\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a change in the health bars' states.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleHP(args) {\r\n\t\t// TODO (set by sD)\r\n\t\t// Also, this is broken.\r\n\t\tif (args[1] == 1) {\r\n\t\t\tdocument.getElementById(\"client_defense_hp\").style.clip = \"rect(0px,\" + BAR_WIDTH * args[2] / 10 + \"px,\" + BAR_HEIGHT + \"px,0px)\";\r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_prosecutor_hp\").style.clip = \"rect(0px,\" + BAR_WIDTH * args[2] / 10 + \"px,\" + BAR_HEIGHT + \"px,0px)\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Handles the issuance of a player ID by the server.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleID(args) {\r\n\t\tthis.playerID = args[1];\r\n\t}\r\n\r\n\thandlePN(args) {\r\n\t\tthis.serv.send(\"askchaa#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Received when the server announces its server info,\r\n\t * but we use it as a cue to begin retrieving characters.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSI(args) {\r\n\t\tif (oldLoading) {\r\n\t\t\tthis.serv.send(\"askchar2#%\");\r\n\t\t} else {\r\n\t\t\tthis.serv.send(\"RC#%\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the list of all used and vacant characters.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCharsCheck(args) {\r\n\t\tdocument.getElementById(\"client_chartable\").innerHTML = \"\";\r\n\t\tfor (let i = 0; i < this.chars.length; i++) {\r\n\t\t\tif (i % CHAR_SELECT_WIDTH == 0) {\r\n\t\t\t\tvar tr = document.createElement('TR');\r\n\t\t\t}\r\n\t\t\tlet td = document.createElement('TD');\r\n\t\t\tlet icon_chosen;\r\n\t\t\tlet thispick = this.chars[i].icon;\r\n\t\t\tif (args[i + 1] == \"-1\") {\r\n\t\t\t\ticon_chosen = \" dark\";\r\n\t\t\t} else {\r\n\t\t\t\ticon_chosen = \"\";\r\n\t\t\t}\r\n\t\t\ttd.innerHTML = `<img class='demothing${icon_chosen}' id='demo_${i}' ` +\r\n\t\t\t\t`src='${thispick}' alt='${this.chars[i].name}' onclick='pickchar(${i})' ` +\r\n\t\t\t\t`onerror='demoError(this);'>`;\r\n\t\t\ttr.appendChild(td);\r\n\t\t\tif (i % CHAR_SELECT_WIDTH == 0) {\r\n\t\t\t\tdocument.getElementById(\"client_chartable\").appendChild(tr);\r\n\t\t\t}\r\n\t\t}\r\n\t\tchangeBackground(\"def\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the server's assignment of a character for the player to use.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandlePV(args) {\r\n\t\tthis.charID = args[3];\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\tlet me = this.me();\r\n\t\tlet emotes = this.emotes;\r\n\t\tlet xhr = new XMLHttpRequest();\r\n\t\txhr.open('GET', AO_HOST + 'characters/' + escape(this.me().name) + '/char.ini', true);\r\n\t\txhr.responseType = 'text';\r\n\t\txhr.onload = function (e) {\r\n\t\t\tif (this.status == 200) {\r\n\t\t\t\tlet linifile = this.responseText;\r\n\t\t\t\tlet pinifile = INI.parse(linifile);\r\n\t\t\t\tme.side = pinifile.Options.side;\r\n\t\t\t\tfor (let i = 1; i < pinifile.Emotions.number; i++) {\r\n\t\t\t\t\tlet emoteinfo = pinifile.Emotions[i].split('#');\r\n\t\t\t\t\tlet esfx = \"0\";\r\n\t\t\t\t\tlet esfxd = \"0\";\r\n\t\t\t\t\tif (typeof pinifile.SoundN !== 'undefined') {\r\n\t\t\t\t\t\tesfx = pinifile.SoundN[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (typeof pinifile.SoundT !== 'undefined') {\r\n\t\t\t\t\t\tesfxd = pinifile.SoundT[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\temotes[i] = {\r\n\t\t\t\t\t\tdesc: emoteinfo[0],\r\n\t\t\t\t\t\tspeaking: emoteinfo[1],\r\n\t\t\t\t\t\tsilent: emoteinfo[2],\r\n\t\t\t\t\t\tzoom: emoteinfo[3],\r\n\t\t\t\t\t\tsfx: esfx,\r\n\t\t\t\t\t\tsfxdelay: esfxd,\r\n\t\t\t\t\t\tbutton_off: AO_HOST + 'characters/' + escape(me.name) + '/emotions/button' + i + '_off.png',\r\n\t\t\t\t\t\tbutton_on: AO_HOST + 'characters/' + escape(me.name) + '/emotions/button' + i + '_on.png'\r\n\t\t\t\t\t};\r\n\t\t\t\t\tdocument.getElementById(\"client_emo\").innerHTML += \"<img src='\" + emotes[i].button_off + \"' id='emo_\" + i + \"' alt='\" + emotes[i].desc + \"' class='client_button' onclick='pickemotion(\" + i + \")'>\";\r\n\t\t\t\t}\r\n\t\t\t\tpickemotion(1);\r\n\t\t\t}\r\n\t\t};\r\n\t\txhr.send();\r\n\t}\t\t\r\n}\r\n\r\nclass Viewport {\r\n\tconstructor() {\r\n\t\tthis.textnow = \"\";\r\n\t\tthis.chatmsg = {\r\n\t\t\t\"isnew\": false,\r\n\t\t\t\"content\": \"\",\r\n\t\t\t\"objection\": \"0\",\r\n\t\t\t\"sound\": \"\",\r\n\t\t\t\"startpreanim\": false,\r\n\t\t\t\"startspeaking\": false,\r\n\t\t\t\"side\": null,\r\n\t\t\t\"color\": \"0\",\r\n\t\t\t\"snddelay\": 0,\r\n\t\t\t\"preanimdelay\": 0\r\n\t\t};\r\n\t\tthis.blip = new Audio(AO_HOST + 'sounds/general/sfx-blipmale.wav');\r\n\t\tthis.blip.volume = 0.5;\r\n\r\n\t\t// Allocate multiple blip audio channels to make blips less jittery\r\n\r\n\t\t// TODO: read blip type (\"gender\") from ini\r\n\t\tthis.blipChannels = new Array(6);\r\n\t\tfor (let i = 0; i < this.blipChannels.length; i++) {\r\n\t\t\tthis.blipChannels[i] = new Audio(AO_HOST + 'sounds/general/sfx-blipmale.wav');\r\n\t\t\tthis.blipChannels[i].volume = 0.5;\r\n\t\t}\r\n\t\tthis.currentBlipChannel = 0;\r\n\r\n\t\tthis.sfxaudio = new Audio(AO_HOST + 'sounds/general/sfx-blipmale.wav');\r\n\t\tthis.sfxplayed = 0;\r\n\r\n\t\tthis.music = new Audio();\r\n\t\tthis.music.play();\r\n\r\n\t\tthis.updater = null;\r\n\r\n\t\tthis.bgname = \"gs4\";\r\n\r\n\t\tthis.shoutTimer = 0;\r\n\t\tthis.textTimer = 0;\r\n\r\n\t\tthis._animating = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns whether or not the viewport is busy\r\n\t * performing a task (animating).\r\n\t */\r\n\tisAnimating() {\r\n\t\treturn this._animating;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the volume of the blip sound.\r\n\t * @param {number} volume\r\n\t */\r\n\tsetBlipVolume(volume) {\r\n\t\tfor (let i = 0; i < this.blipChannels.length; i++) {\r\n\t\t\tthis.blipChannels[i].volume = volume;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the path which the background is located in.\r\n\t */\r\n\tbgFolder() {\r\n\t\treturn `${AO_HOST}background/${this.bgname}/`;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a new emote.\r\n\t * @param {object} chatmsg the new chat message\r\n\t */\r\n\tsay(chatmsg) {\r\n\t\tthis.chatmsg = chatmsg;\r\n\t\tappendICLog(chatmsg.content, chatmsg.nameplate);\r\n\t\tchangeBackground(chatmsg.side);\r\n\t\tthis.textnow = '';\r\n\t\tthis.sfxplayed = 0;\r\n\t\tthis.textTimer = 0;\r\n\t\tthis._animating = true;\r\n\t\tclearTimeout(this.updater);\r\n\t\t//If preanim existed then determine the length\r\n\t\tif (chatmsg.preanim != \"-\") {\r\n\t\t\tchatmsg.preanimdelay = this.getAnimLength(AO_HOST + 'characters/' + escape(chatmsg.name) + '/' + chatmsg.preanim + '.gif',this.initUpdater);\r\n\t\t} else {\r\n\t\t\tthis.initUpdater(0)\r\n\t\t}\t\r\n\t}\r\n\t\r\n\t/**\r\n\t * Intialize updater\r\n\t * @param {int} animdelay the length of pre-animation \r\n\t */\r\n\tinitUpdater(animdelay){\r\n\t\tviewport.chatmsg.preanimdelay = parseInt(animdelay); \r\n\t\tviewport.updater = setTimeout(() => viewport.updateText(), UPDATE_INTERVAL);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Gets animation length.\r\n\t * @param {string} filename the animation file name\r\n\t * @param {function} callback the callback function\r\n\t */\r\n\tgetAnimLength(filename,callback) {\r\n\t\t//Source (Thanks to Ryman): https://codepen.io/Ryman/pen/wzioA\r\n\t\tvar request = new XMLHttpRequest();\r\n\t\trequest.open('GET', filename, true);\r\n\t\trequest.responseType = 'arraybuffer';\r\n\t\trequest.addEventListener('load', function () {\r\n\t\t\tvar arr = new Uint8Array(request.response),\r\n\t\t\t// Thanks to http://justinsomnia.org/2006/10/gif-animation-duration-calculation/\r\n\t\t\t// And http://www.w3.org/Graphics/GIF/spec-gif89a.txt\r\n\t\t\tbin = '', \r\n\t\t\tduration = 0;\r\n\t\t\t\r\n\t\t\tfor (var i = 0; i < arr.length; i++) {\t\t\t\t\r\n\t\t\t\tbin += String.fromCharCode( arr[i] )\r\n\r\n\t\t\t\t// Find a Graphic Control Extension hex(21F904__ ____ __00)\r\n\t\t\t\tif (arr[i] == 0x21 \r\n\t\t\t\t && arr[i + 1] == 0xF9 \r\n\t\t\t\t && arr[i + 2] == 0x04 \r\n\t\t\t\t && arr[i + 7] == 0x00) {\r\n\t\t\t\t // Swap 5th and 6th bytes to get the delay per frame\r\n\t\t\t\t let delay = (arr[i + 5] << 8) | (arr[i + 4] & 0xFF)\r\n\t\t\t\t \r\n\t\t\t\t // Should be aware browsers have a minimum frame delay \r\n\t\t\t\t // e.g. 6ms for IE, 2ms modern browsers (50fps)\r\n\t\t\t\t duration += delay < 2 ? 10 : (delay)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Return animation length\r\n\t\t\tcallback(duration * 10);\r\n\t\t});\r\n\t\trequest.send();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the chatbox based on the given text.\r\n\t * \r\n\t * XXX: This relies on a global variable `this.chatmsg`!\r\n\t */\r\n\tupdateText() {\r\n\t\t// Flip the character\r\n\t\tif (this.chatmsg.flip == 1){\r\n\t\t\tdocument.getElementById(\"client_char\").style.transform = \"scaleX(-1)\"; \r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_char\").style.transform = \"scaleX(1)\";\r\n\t\t}\r\n\t\t\t\r\n\t\tif (this._animating) {\r\n\t\t\tthis.updater = setTimeout(() => this.updateText(), UPDATE_INTERVAL);\r\n\t\t}\r\n\r\n\t\tif (this.chatmsg.isnew) {\r\n\t\t\t// Reset screen background\r\n\t\t\tdocument.getElementById(\"client_background\").style.backgroundColor = \"transparent\";\r\n\t\t\t//Hide message and evidence window\r\n\t\t\tdocument.getElementById(\"client_name\").style.display = \"none\";\r\n\t\t\tdocument.getElementById(\"client_chat\").style.display = \"none\";\r\n\t\t\tdocument.getElementById(\"client_evi\").style.opacity = \"0\";\r\n\t\t\tdocument.getElementById(\"client_evi\").style.height = \"0%\";\r\n\t\t\tconst shouts = {\r\n\t\t\t\t\"1\": \"holdit\",\r\n\t\t\t\t\"2\": \"objection\",\r\n\t\t\t\t\"3\": \"takethat\"\r\n\t\t\t};\r\n\r\n\t\t\tlet shout = shouts[this.chatmsg.objection];\r\n\t\t\tif (typeof shout !== \"undefined\") {\r\n\t\t\t\tdocument.getElementById(\"client_shout\").src = AO_HOST + \"misc/\" + shout + \".gif\";\r\n\t\t\t\t(new Audio(`${AO_HOST}/characters/${this.chatmsg.name}/${shout}.wav`)).play();\r\n\t\t\t\tthis.shoutTimer = 850;\r\n\t\t\t} else {\r\n\t\t\t\tthis.shoutTimer = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.chatmsg.isnew = false;\r\n\t\t\tthis.chatmsg.startpreanim = true;\r\n\t\t}\r\n\r\n\t\tif(this.textTimer >= this.shoutTimer && this.chatmsg.startpreanim) {\r\n\t\t\t// Effect stuff\r\n\t\t\tif (this.chatmsg.flash == 2){\r\n\t\t\t\t//Shake screen\r\n\t\t\t\tthis.sfxaudio.pause();\r\n\t\t\t\tthis.sfxplayed = 1;\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/sfx-stab.wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t\t$('#client_gamewindow').effect( \"shake\",{\"direction\":\"up\"});\r\n\t\t\t} else if (this.chatmsg.flash == 1) {\r\n\t\t\t\t//Flash screen\r\n\t\t\t\tdocument.getElementById(\"client_background\").style.backgroundColor = \"white\";\r\n\t\t\t\tthis.sfxaudio.pause();\r\n\t\t\t\tthis.sfxplayed = 1;\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/sfx-realization.wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t\t$('#client_gamewindow').effect(\"pulsate\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//Pre-animation stuff\r\n\t\t\tif(this.chatmsg.preanimdelay > 0){\r\n\t\t\t\tdocument.getElementById(\"client_shout\").src = \"misc/placeholder.gif\";\r\n\t\t\t\tchangeBackground(this.chatmsg.side);\r\n\t\t\t\tdocument.getElementById(\"client_char\").src = AO_HOST + \"characters/\" + escape(this.chatmsg.name) + \"/\" + this.chatmsg.preanim + \".gif\";\r\n\t\t\t}\r\n\t\t\tthis.chatmsg.startpreanim = false;\r\n\t\t\tthis.chatmsg.startspeaking = true;\r\n\t\t} else if (this.textTimer >= this.shoutTimer + this.chatmsg.preanimdelay && !this.chatmsg.startpreanim) {\r\n\t\t\tif (this.chatmsg.startspeaking) {\r\n\t\t\t\tif(this.chatmsg.evidence > 0){\r\n\t\t\t\t\t// Prepare evidence\r\n\t\t\t\t\tdocument.getElementById(\"client_evi\").style.backgroundImage = \"url('\"+ client.evidences[this.chatmsg.evidence - 1].icon +\"')\";\r\n\t\t\t\t\r\n\t\t\t\t\tif (this.chatmsg.side == 'def'){\r\n\t\t\t\t\t\t// Only def show evidence on right\r\n\t\t\t\t\t\tdocument.getElementById(\"client_evi\").style.right = \"1.5em\";\r\n\t\t\t\t\t\tdocument.getElementById(\"client_evi\").style.left = \"initial\";\r\n\t\t\t\t\t\t$( \"#client_evi\" ).animate({\r\n\t\t\t\t\t\t\theight: \"30%\",\r\n\t\t\t\t\t\t\topacity: 1\r\n\t\t\t\t\t\t}, 250 );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdocument.getElementById(\"client_evi\").style.right = \"initial\";\r\n\t\t\t\t\t\tdocument.getElementById(\"client_evi\").style.left = \"1.5em\";\r\n\t\t\t\t\t\t$( \"#client_evi\" ).animate({\r\n\t\t\t\t\t\t\theight: \"30%\",\r\n\t\t\t\t\t\t\topacity: 1\r\n\t\t\t\t\t\t}, 250 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t$(\"#client_name\").toggle( \"fade\" );\r\n\t\t\t\t$(\"#client_chat\").toggle(\"drop\",{\"direction\":\"down\"});\r\n\t\t\t\tif(this.chatmsg.preanimdelay == 0){\r\n\t\t\t\t\tdocument.getElementById(\"client_shout\").src = \"misc/placeholder.gif\";\r\n\t\t\t\t\tchangeBackground(this.chatmsg.side);\r\n\t\t\t\t}\r\n\t\t\t\tdocument.getElementById(\"client_char\").src = AO_HOST + \"characters/\" + escape(this.chatmsg.name) + \"/\" + this.chatmsg.speaking + \".gif\";\r\n\t\t\t\tdocument.getElementById(\"client_name\").style.fontSize = (document.getElementById(\"client_name\").offsetHeight * 0.7) + \"px\";\r\n\t\t\t\tdocument.getElementById(\"client_chat\").style.fontSize = (document.getElementById(\"client_chat\").offsetHeight * 0.25) + \"px\";\r\n\t\t\t\tdocument.getElementById(\"client_name\").innerHTML = \"<p>\" + escapeHtml(this.chatmsg.nameplate) + \"</p>\";\r\n\r\n\t\t\t\tconst colors = {\r\n\t\t\t\t\t\"0\": \"#ffffff\",\r\n\t\t\t\t\t\"1\": \"#00ff00\",\r\n\t\t\t\t\t\"2\": \"#ff0000\",\r\n\t\t\t\t\t\"3\": \"#ffaa00\",\r\n\t\t\t\t\t\"4\": \"#0000ff\",\r\n\t\t\t\t\t\"5\": \"#ffff00\",\r\n\t\t\t\t\t\"6\": \"#aa00aa\"\r\n\t\t\t\t}\r\n\t\t\t\tlet stylecolor = \"color: \" + (colors[this.chatmsg.color] || \"#ffffff\");\r\n\t\t\t\tdocument.getElementById(\"client_inner_chat\").style = stylecolor;\r\n\t\t\t\tthis.chatmsg.startspeaking = false;\r\n\r\n\t\t\t\tif (this.textnow == this.chatmsg.content) {\r\n\t\t\t\t\tdocument.getElementById(\"client_char\").src = AO_HOST + \"characters/\" + escape(this.chatmsg.name) + \"/\" + this.chatmsg.silent + \".gif\";\r\n\t\t\t\t\tthis._animating = false;\r\n\t\t\t\t\tclearTimeout(this.updater);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.textnow != this.chatmsg.content) {\r\n\t\t\t\t\tif (this.chatmsg.content.charAt(this.textnow.length) != \" \") {\r\n\t\t\t\t\t\tthis.blipChannels[this.currentBlipChannel].play();\r\n\t\t\t\t\t\tthis.currentBlipChannel++;\r\n\t\t\t\t\t\tthis.currentBlipChannel %= this.blipChannels.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.textnow = this.chatmsg.content.substring(0, this.textnow.length + 1);\r\n\t\t\t\t\tdocument.getElementById(\"client_inner_chat\").innerHTML = this.textnow;\r\n\t\t\t\t\tif (this.textnow == this.chatmsg.content) {\r\n\t\t\t\t\t\tthis.textTimer = 0;\r\n\t\t\t\t\t\tthis._animating = false;\r\n\t\t\t\t\t\tdocument.getElementById(\"client_char\").src = AO_HOST + \"characters/\" + escape(this.chatmsg.name) + \"/\" + this.chatmsg.silent + \".gif\";\r\n\t\t\t\t\t\tclearTimeout(this.updater);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.sfxplayed && this.chatmsg.snddelay + this.shoutTimer >= this.textTimer) {\r\n\t\t\tthis.sfxaudio.pause();\r\n\t\t\tthis.sfxplayed = 1;\r\n\t\t\tif (this.chatmsg.sound != \"0\" && this.chatmsg.sound != \"1\") {\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/\" + escape(this.chatmsg.sound) + \".wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.textTimer = this.textTimer + UPDATE_INTERVAL;\r\n\t}\r\n}\r\n\r\nclass INI {\r\n\tstatic parse(data) {\r\n\t\tlet regex = {\r\n\t\t\tsection: /^\\s*\\[\\s*([^\\]]*)\\s*\\]\\s*$/,\r\n\t\t\tparam: /^\\s*([\\w\\.\\-\\_]+)\\s*=\\s*(.*?)\\s*$/,\r\n\t\t\tcomment: /^\\s*;.*$/\r\n\t\t};\r\n\t\tlet value = {};\r\n\t\tlet lines = data.split(/\\r\\n|\\r|\\n/);\r\n\t\tlet section = null;\r\n\t\tlines.forEach(function(line) {\r\n\t\t\tif (regex.comment.test(line)) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if (line.length == 0) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if (regex.param.test(line)) {\r\n\t\t\t\tlet match = line.match(regex.param);\r\n\t\t\t\tif (section) {\r\n\t\t\t\t\tvalue[section][match[1]] = match[2];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalue[match[1]] = match[2];\r\n\t\t\t\t}\r\n\t\t\t} else if (regex.section.test(line)) {\r\n\t\t\t\tlet match = line.match(regex.section);\r\n\t\t\t\tvalue[match[1]] = {};\r\n\t\t\t\tsection = match[1];\r\n\t\t\t};\r\n\t\t});\r\n\t\treturn value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Triggered when the Return key is pressed on the out-of-character chat input box.\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function onOOCEnter(event) {\r\n\tif (event.keyCode == 13) {\r\n\t\tclient.sendOOC(document.getElementById(\"client_oocinputbox\").value);\r\n\t\tdocument.getElementById(\"client_oocinputbox\").value = \"\";\r\n\t}\r\n}\r\nwindow.onOOCEnter = onOOCEnter;\r\n\r\n/**\r\n * Triggered when the Return key is pressed on the in-character chat input box.\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function onEnter(event) {\r\n\tif (event.keyCode == 13) {\r\n\t\tlet mychar = client.me();\r\n\t\tlet myemo = client.myEmote();\r\n\t\tlet myevi = client.myEvidence();\r\n\t\tlet myflip = ((client.flip)? 1:0);\r\n\t\tlet mycolor = document.getElementById(\"textcolor\").value;\r\n\t\tlet ssfxname = \"0\";\r\n\t\tlet ssfxdelay = \"0\";\r\n\t\tif (document.getElementById(\"sendsfx\").checked) {\r\n\t\t\tssfxname = myemo.sfx;\r\n\t\t\tssfxdelay = myemo.sfxdelay;\r\n\t\t}\r\n\t\tclient.sendIC(myemo.speaking, mychar.name, myemo.silent, document.getElementById(\"client_inputbox\").value, mychar.side, ssfxname, myemo.zoom, ssfxdelay, selectedShout, myevi, myflip, selectedEffect, mycolor);\r\n\t}\r\n}\r\nwindow.onEnter = onEnter;\r\n\r\n/**\r\n * Resets the IC parameters for the player to enter a new chat message.\r\n * This should only be called when the player's previous chat message\r\n * was successfully sent/presented.\r\n */\r\nfunction resetICParams() {\r\n\tdocument.getElementById(\"client_inputbox\").value = \"\";\r\n\tif (selectedEffect) {\r\n\t\tdocument.getElementById(\"button_effect_\" + selectedEffect).className = \"client_button\";\r\n\t\tselectedEffect = 0;\r\n\t}\r\n\tif (selectedShout) {\r\n\t\tdocument.getElementById(\"button_\" + selectedShout).className = \"client_button\";\r\n\t\tselectedShout = 0;\r\n\t}\t\t\r\n}\r\n\r\n/**\r\n * Triggered when an item on the music list is clicked.\r\n * @param {MouseEvent} event\r\n */\r\nexport function musiclist_click(event) {\r\n\tlet playtrack = document.getElementById(\"client_musiclist\").value;\r\n\tclient.sendMusicChange(playtrack);\r\n}\r\nwindow.musiclist_click = musiclist_click;\r\n\r\n/**\r\n * Triggered when an item on the music list is clicked.\r\n * @param {MouseEvent} event\r\n */\r\nexport function area_click(el) {\r\n\tlet playtrack = el.textContent;\r\n\tclient.sendMusicChange(playtrack);\r\n}\r\nwindow.area_click = area_click;\r\n\r\n/**\r\n * Triggered by the music volume slider.\r\n */\r\nexport function changeMusicVolume() {\r\n\tviewport.music.volume = document.getElementById(\"client_mvolume\").value / 100;\r\n}\r\nwindow.changeMusicVolume = changeMusicVolume;\r\n\r\n/**\r\n * Triggered by the sound effect volume slider.\r\n */\r\nexport function changeSFXVolume() {\r\n\tviewport.sfxaudio.volume = document.getElementById(\"client_svolume\").value / 100;\r\n}\r\nwindow.changeSFXVolume = changeSFXVolume;\r\n\r\n/**\r\n * Triggered by the blip volume slider.\r\n */\r\nexport function changeBlipVolume() {\r\n\tviewport.setBlipVolume(document.getElementById(\"client_bvolume\").value / 100);\r\n}\r\nwindow.changeBlipVolume = changeBlipVolume;\r\n\r\n/**\r\n * Triggered when a character icon is clicked in the character selection menu.\r\n * @param {MouseEvent} event\r\n */\r\nexport function changeCharacter(event) {\r\n\tclient.sendLeaveRoom();\r\n\tdocument.getElementById(\"client_charselect\").style.display = \"block\";\r\n\tdocument.getElementById(\"client_emo\").innerHTML = \"\";\r\n}\r\nwindow.changeCharacter = changeCharacter;\r\n\r\n/**\r\n * Triggered when there was an error loading a character sprite.\r\n * @param {HTMLImageElement} image the element containing the missing image\r\n */\r\nexport function imgError(image) {\r\n\timage.onerror = \"\";\r\n\timage.src = \"misc/placeholder.gif\";\r\n\treturn true;\r\n}\r\nwindow.imgError = imgError;\r\n\r\n/**\r\n * Triggered when there was an error loading a character icon.\r\n * @param {HTMLImageElement} image the element containing the missing image\r\n */\r\nexport function demoError(image) {\r\n\timage.onerror = \"\";\r\n\timage.src = \"/misc/placeholder.png\";\r\n\treturn true;\r\n}\r\nwindow.demoError = demoError;\r\n\r\n/**\r\n * Checks if an image exists at the specified URI.\r\n * @param {string} url the URI to be checked\r\n */\r\nfunction ImageExist(url) {\r\n\tvar img = new Image();\r\n\timg.src = url;\r\n\treturn img.height != 0;\r\n}\r\n\r\n/**\r\n * Changes the viewport background based on a given position.\r\n * \r\n * Valid positions: `def, pro, hld, hlp, wit, jud`\r\n * @param {string} position the position to change into\r\n */\r\nfunction changeBackground(position) {\r\n\tvar standname;\r\n\tlet bgfolder = viewport.bgFolder();\r\n\tdocument.getElementById(\"client_fg\").style.display = \"none\";\r\n\tdocument.getElementById(\"client_bench\").style.display = \"none\";\r\n\tswitch (position) {\r\n\t\tcase \"def\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"defenseempty.png\"\r\n\t\t\tdocument.getElementById(\"client_bench\").style.display = \"block\";\r\n\t\t\tif(ImageExist(bgfolder + \"defensedesk.png\")){\r\n\t\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"defensedesk.png\"\r\n\t\t\t}else{\r\n\t\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"bancodefensa.png\"\r\n\t\t\t}\r\n\t\t\tstandname = \"defense\";\r\n\t\t\tbreak;\r\n\t\tcase \"pro\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"prosecutorempty.png\"\r\n\t\t\tdocument.getElementById(\"client_bench\").style.display = \"block\"\r\n\t\t\tif(ImageExist(bgfolder + \"defensedesk.png\")){\r\n\t\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"prosecutiondesk.png\"\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"bancoacusacion.png\"\r\n\t\t\t}\t\t\t\r\n\t\t\tstandname = \"prosecution\";\r\n\t\t\tbreak;\r\n\t\tcase \"hld\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"helperstand.png\"\r\n\t\t\tstandname = \"defense\";\r\n\t\t\tbreak;\r\n\t\tcase \"hlp\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"prohelperstand.png\"\r\n\t\t\tstandname = \"prosecution\";\r\n\t\t\tbreak;\r\n\t\tcase \"wit\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"witnessempty.png\"\r\n\t\t\tdocument.getElementById(\"client_bench\").style.display = \"block\"\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"estrado.png\"\r\n\t\t\tstandname = \"prosecution\";\r\n\t\t\tbreak;\r\n\t\tcase \"jud\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"judgestand.png\"\r\n\t\t\tstandname = \"prosecution\";\r\n\t\t\tbreak;\r\n\t}\r\n\tif (viewport.chatmsg.type == 5) {\r\n\t\tdocument.getElementById(\"client_bench\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_court\").src = AO_HOST + \"themes/default/\" + standname + \"_speedlines.gif\";\r\n\t}\r\n}\r\n\r\n/**\r\n * Triggered when the reconnect button is pushed.\r\n */\r\nexport function ReconnectButton() {\r\n\tclient.cleanup();\r\n\tclient = new Client(serverIP);\r\n\tif (client) {\r\n\t\tmode = \"join\"; // HACK: see client.onOpen\r\n\t\tdocument.getElementById(\"client_error\").style.display = \"none\";\r\n\t}\r\n}\r\nwindow.ReconnectButton = ReconnectButton;\r\n\r\n/**\r\n * Triggered when the retry button is pushed (during the loading process).\r\n */\r\nexport function RetryButton() {\r\n\tclient.joinServer();\r\n}\r\nwindow.RetryButton = RetryButton;\r\n\r\n/**\r\n * Appends a message to the in-character chat log.\r\n * @param {string} toadd the string to be added\r\n * @param {string} name the name of the sender\r\n */\r\nfunction appendICLog(toadd, name = \"\", time = new Date()) {\r\n\tconst entry = document.createElement(\"p\");\r\n\tconst nameField = document.createElement(\"span\");\r\n\tnameField.id = \"iclog_name\";\r\n\tnameField.appendChild(document.createTextNode(name));\r\n\tentry.appendChild(nameField);\r\n\tentry.appendChild(document.createTextNode(toadd));\r\n\r\n\t// Only put a timestamp if the minute has changed.\r\n\tif (lastICMessageTime.getMinutes() !== time.getMinutes()) {\r\n\t\tconst timeStamp = document.createElement(\"span\");\r\n\t\ttimeStamp.id = \"iclog_time\";\r\n\t\ttimeStamp.innerText = time.toLocaleTimeString(undefined, {\r\n\t\t\thour: \"numeric\",\r\n\t\t\tminute: \"2-digit\"\r\n\t\t});\r\n\t\tentry.appendChild(timeStamp);\r\n\t}\r\n\r\n\tconst clientLog = document.getElementById(\"client_log\");\r\n\tclientLog.appendChild(entry);\r\n\r\n\tif (clientLog.scrollTop > clientLog.scrollHeight - 600) {\r\n\t\tclientLog.scrollTop = clientLog.scrollHeight;\r\n\t}\r\n\r\n\tlastICMessageTime = new Date();\r\n}\r\n\r\n/**\r\n * Requests to play as a character.\r\n * @param {number} ccharacter the character ID; if this is a large number, then spectator is chosen instead.\r\n */\r\nexport function pickchar(ccharacter) {\r\n\tif (ccharacter < 1000) {\r\n\t\tclient.sendCharacter(ccharacter);\r\n\t} else {\r\n\t\t// Spectator\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_inputbox\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_emo\").style.display = \"none\";\r\n\t}\r\n}\r\nwindow.pickchar = pickchar;\r\n\r\n/**\r\n * Highlights and selects an emotion for in-character chat.\r\n * @param {string} emo the new emotion to be selected\r\n */\r\nexport function pickemotion(emo) {\r\n\tif (client.selectedEmote != -1) {\r\n\t\tdocument.getElementById(\"emo_\" + client.selectedEmote).src = client.myEmote().button_off;\r\n\t}\r\n\tclient.selectedEmote = emo\r\n\tdocument.getElementById(\"emo_\" + emo).src = client.myEmote().button_on;\r\n}\r\nwindow.pickemotion = pickemotion;\r\n\r\n/**\r\n * Highlights and selects an evidence for in-character chat.\r\n * @param {string} evidence the evidence to be presented\r\n */\r\nexport function pickevidence(evidence) {\r\n\tif (client.selectedEvidence != evidence) {\r\n\t\t//Update selected evidence\t\t\r\n\t\tif(client.selectedEvidence > 0){\r\n\t\t\tdocument.getElementById(\"evi_\" + client.selectedEvidence).className = \"client_button\";\r\n\t\t}\r\n\t\tdocument.getElementById(\"evi_\" + evidence).className = \"client_button dark\";\r\n\t\tclient.selectedEvidence = evidence;\r\n\t\t\r\n\t\t// Show evidence on information window\r\n\t\tdocument.getElementById(\"evi_name\").value = client.evidences[evidence - 1].name;\r\n\t\tdocument.getElementById(\"evi_desc\").value = client.evidences[evidence - 1].desc;\r\n\r\n\t\t//Update Icon\r\n\t\tlet icon_id = getIndexFromSelect(\"evi_select\", client.evidences[evidence - 1].filename);\r\n\t\tdocument.getElementById(\"evi_select\").selectedIndex = icon_id;\r\n\t\tif (icon_id == 0){\t\t\t\r\n\t\t\tdocument.getElementById(\"evi_filename\").value = client.evidences[evidence - 1].filename;\r\n\t\t}\r\n\t\tupdateEvidenceIcon();\r\n\t\t\r\n\t\t// Update button\r\n\t\tdocument.getElementById(\"evi_add\").className = \"client_button hover_button inactive\";\r\n\t\tdocument.getElementById(\"evi_edit\").className = \"client_button hover_button\";\r\n\t\tdocument.getElementById(\"evi_cancel\").className = \"client_button hover_button\";\r\n\t\tdocument.getElementById(\"evi_del\").className = \"client_button hover_button\";\r\n\t} else {\r\n\t\tcancelevidence();\r\n\t}\r\n}\r\nwindow.pickevidence = pickevidence;\r\n\r\n/**\r\n * Add evidence.\r\n */\r\nexport function addevidence() {\r\n\tlet evidence_select = document.getElementById('evi_select');\r\n\tclient.sendPE( document.getElementById('evi_name').value,\r\n\t\tdocument.getElementById('evi_desc').value,\r\n\t\t(evidence_select.selectedIndex == 0)? \r\n\t\t\tdocument.getElementById('evi_filename').value : \r\n\t\t\tevidence_select.options[evidence_select.selectedIndex].text \r\n\t\t);\r\n\tcancelevidence();\r\n}\r\nwindow.addevidence = addevidence;\r\n\r\n/**\r\n * Edit selected evidence.\r\n */\r\nexport function editevidence() {\r\n\tlet evidence_select = document.getElementById('evi_select');\r\n\tlet id = parseInt(client.selectedEvidence) - 1;\r\n\tclient.sendEE( id, \r\n\t\tdocument.getElementById('evi_name').value,\r\n\t\tdocument.getElementById('evi_desc').value,\r\n\t\t(evidence_select.selectedIndex == 0)? \r\n\t\t\tdocument.getElementById('evi_filename').value : \r\n\t\t\tevidence_select.options[evidence_select.selectedIndex].text \r\n\t\t);\r\n\tcancelevidence();\r\n}\r\nwindow.editevidence = editevidence;\r\n\r\n/**\r\n * Delete selected evidence.\r\n */\r\nexport function delevidence() {\r\n\tlet id = parseInt(client.selectedEvidence) - 1;\r\n\tclient.sendDE(id);\r\n\tcancelevidence();\r\n}\r\nwindow.delevidence = delevidence;\r\n\r\n/**\r\n * Cancel evidence selection.\r\n */\r\nexport function cancelevidence() {\r\n\t//Clear evidence data\r\n\tif(client.selectedEvidence > 0){\r\n\t\tdocument.getElementById(\"evi_\" + client.selectedEvidence).className = \"client_button\";\r\n\t}\r\n\tclient.selectedEvidence = 0;\r\n\t\r\n\t// Clear evidence on information window\r\n\tdocument.getElementById(\"evi_select\").selectedIndex = 0;\r\n\tupdateEvidenceIcon(); // Update icon widget\r\n\tdocument.getElementById(\"evi_filename\").value = \"\";\r\n\tdocument.getElementById(\"evi_name\").value = \"\";\r\n\tdocument.getElementById(\"evi_desc\").value = \"\";\r\n\tdocument.getElementById(\"evi_icon\").style.backgroundImage = \"url('misc/empty.png')\"; //Clear icon\r\n\t\r\n\t// Update button\r\n\tdocument.getElementById(\"evi_add\").className = \"client_button hover_button\";\r\n\tdocument.getElementById(\"evi_edit\").className = \"client_button hover_button inactive\";\r\n\tdocument.getElementById(\"evi_cancel\").className = \"client_button hover_button inactive\";\r\n\tdocument.getElementById(\"evi_del\").className = \"client_button hover_button inactive\";\r\n}\r\nwindow.cancelevidence = cancelevidence;\r\n\r\n/**\r\n * Find index of anything in select box.\r\n * @param {string} select_box the select element name\r\n * @param {string} value the value that need to be compared\r\n */\r\nexport function getIndexFromSelect(select_box, value) {\r\n\t\t//Find if icon alraedy existed in select box\r\n\t\tlet select_element = document.getElementById(select_box);\r\n\t\tfor (let i = 1; i < select_element.length; ++i){\r\n\t\t\tif (select_element.options[i].value == value){\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 0;\r\n}\r\nwindow.getIndexFromSelect = getIndexFromSelect;\r\n\r\n/**\r\n * Update evidence icon.\r\n */\r\nexport function updateEvidenceIcon() {\r\n\tlet evidence_select = document.getElementById(\"evi_select\");\r\n\tlet evidence_filename = document.getElementById(\"evi_filename\");\r\n\tlet evidence_iconbox = document.getElementById(\"evi_icon\");\r\n\t\r\n\tif (evidence_select.selectedIndex == 0) {\r\n\t\tevidence_filename.style.display = \"initial\";\r\n\t\tevidence_iconbox.style.backgroundImage = \"url('\" + AO_HOST + 'evidence/' + evidence_filename.value + \"')\";\r\n\t} else {\t\t\r\n\t\tevidence_filename.style.display = \"none\";\r\n\t\tevidence_iconbox.style.backgroundImage = \"url('\" + AO_HOST + 'evidence/' + evidence_select.value + \"')\" ;\r\n\t}\r\n}\r\nwindow.updateEvidenceIcon = updateEvidenceIcon;\r\n\r\n/**\r\n * Change background.\r\n */\r\nexport function changeBackgroundOOC() {\r\n\tlet filename = \"\", background_select = document.getElementById(\"bg_select\")\r\n\t\t, bg_command = document.getElementById(\"bg_command\").value;\r\n\tif (background_select.selectedIndex == 0) {\r\n\t\tfilename = document.getElementById(\"bg_filename\").value; \r\n\t} else{\r\n\t\tfilename = background_select.value;\r\n\t}\r\n\tclient.sendOOC(\"/\" + bg_command.replace(\"$1\",filename));\r\n}\r\nwindow.changeBackgroundOOC = changeBackgroundOOC;\r\n\r\n/**\r\n * Update background preview.\r\n */\r\nexport function updateBackgroundPreview() {\r\n\tlet background_select = document.getElementById(\"bg_select\");\r\n\tlet background_filename = document.getElementById(\"bg_filename\");\r\n\tlet background_preview = document.getElementById(\"bg_preview\");\r\n\t\r\n\tif (background_select.selectedIndex == 0) {\r\n\t\tbackground_filename.style.display = \"initial\";\r\n\t\tbackground_preview.src = AO_HOST + 'background/' + background_filename.value + \"/defenseempty.png\";\r\n\t} else {\r\n\t\tbackground_filename.style.display = \"none\";\r\n\t\tbackground_preview.src = AO_HOST + 'background/' + background_select.value + \"/defenseempty.png\";\r\n\t}\r\n}\r\nwindow.updateBackgroundPreview = updateBackgroundPreview;\r\n\r\n/**\r\n * Highlights and selects an effect for in-character chat.\r\n * If the same effect button is selected, then the effect is canceled.\r\n * @param {string} effect the new effect to be selected\r\n */\r\nexport function toggleaffect(effect) {\r\n\tif (effect == selectedEffect) {\r\n\t\tdocument.getElementById(\"button_effect_\" + effect).className = \"client_button\";\r\n\t\tselectedEffect = 0;\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_effect_\" + effect).className = \"client_button dark\";\r\n\t\tif (selectedEffect) {\r\n\t\t\tdocument.getElementById(\"button_effect_\" + selectedEffect).className = \"client_button\";\r\n\t\t}\r\n\t\tselectedEffect = effect;\r\n\t}\r\n}\r\nwindow.toggleaffect = toggleaffect;\r\n\r\n/**\r\n * Toggle flip for in-character chat.\r\n */\r\nexport function toggleflip() {\r\n\tif (client.flip) {\r\n\t\tdocument.getElementById(\"button_flip\").className = \"client_button\";\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_flip\").className = \"client_button dark\";\r\n\t}\r\n\tclient.flip = !client.flip;\r\n}\r\nwindow.toggleflip = toggleflip;\r\n\r\n/**\r\n * Toggle presentable for presenting evidence in-character chat.\r\n */\r\nexport function togglepresent() {\r\n\tif (client.presentable) {\r\n\t\tdocument.getElementById(\"button_present\").className = \"client_button\";\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_present\").className = \"client_button dark\";\r\n\t}\r\n\tclient.presentable = !client.presentable;\r\n}\r\nwindow.togglepresent = togglepresent;\r\n\r\n/**\r\n * Highlights and selects a menu.\r\n * @param {string} menu the menu to be selected\r\n */\r\nexport function togglemenu(menu) {\r\n\tif (menu != selectedMenu) {\r\n\t\tdocument.getElementById(\"menu_\" + menu).className = \"menu_icon active\";\r\n\t\tdocument.getElementById(\"content_\" + menu).className = \"menu_content active\";\r\n\t\tdocument.getElementById(\"menu_\" + selectedMenu).className = \"menu_icon\";\r\n\t\tdocument.getElementById(\"content_\" + selectedMenu).className = \"menu_content\";\r\n\t\tselectedMenu = menu;\r\n\t}\r\n}\r\nwindow.togglemenu = togglemenu;\r\n\r\n/**\r\n * Highlights and selects a shout for in-character chat.\r\n * If the same shout button is selected, then the shout is canceled.\r\n * @param {string} shout the new shout to be selected\r\n */\r\nexport function toggleshout(shout) {\r\n\tif (shout == selectedShout) {\r\n\t\tdocument.getElementById(\"button_\" + shout).className = \"client_button\";\r\n\t\tselectedShout = 0;\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_\" + shout).className = \"client_button dark\";\r\n\t\tif (selectedShout) {\r\n\t\t\tdocument.getElementById(\"button_\" + selectedShout).className = \"client_button\";\r\n\t\t}\r\n\t\tselectedShout = shout;\r\n\t}\r\n}\r\nwindow.toggleshout = toggleshout;\r\n\r\n/**\r\n * Escapes a string to be HTML-safe.\r\n * \r\n * XXX: This is unnecessary if we use `createTextNode` instead!\r\n * @param {string} unsafe an unsanitized string\r\n */\r\nfunction escapeHtml(unsafe) {\r\n\treturn unsafe\r\n\t\t.replace(/&/g, \"&\")\r\n\t\t.replace(/</g, \"<\")\r\n\t\t.replace(/>/g, \">\")\r\n\t\t.replace(/\"/g, \""\")\r\n\t\t.replace(/'/g, \"'\");\r\n}\r\n\r\n/**\r\n * Escapes a string to AO1 escape codes.\r\n * @param {string} estring the string to be escaped\r\n */\r\nfunction escapeChat(estring) {\r\n\treturn estring\r\n\t\t.replace(/#/g, \"<pound>\")\r\n\t\t.replace(/&/g, \"<and>\")\r\n\t\t.replace(/%/g, \"<percent>\")\r\n\t\t.replace(/\\$/g, \"<dollar>\");\r\n}\r\n\r\n/**\r\n * Unescapes a string to AO1 escape codes.\r\n * @param {string} estring the string to be unescaped\r\n */\r\nfunction unescapeChat(estring) {\r\n\treturn estring\r\n\t\t.replace(/<pound>/g, \"#\")\r\n\t\t.replace(/<and>/g, \"&\")\r\n\t\t.replace(/<percent>/g, \"%\")\r\n\t\t.replace(/<dollar>/g, \"$\");\r\n}\r\n\r\n/**\r\n * Encoding text on client side.\r\n * @param {string} estring the string to be encoded\r\n */\r\nfunction encodeChat(estring) {\r\n\tlet selectedEncoding = document.getElementById(\"client_encoding\").value;\r\n\tif (selectedEncoding == \"unicode\") {\r\n\t\t//Source: https://gist.github.com/mathiasbynens/1243213\r\n\t\treturn estring.replace(/[^\\0-~]/g, function(ch) {\r\n\t\t\treturn \"\\\\u\" + (\"000\" + ch.charCodeAt().toString(16)).slice(-4); });\r\n\t} else if (selectedEncoding == \"utf16\"){\r\n\t\t//Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\r\n\t\tvar buffer = new ArrayBuffer(estring.length*2);\r\n\t\tvar result = new Uint16Array(buffer);\r\n\t\tfor (var i=0, strLen=estring.length; i < strLen; i++) {\r\n\t\t\tresult[i] = estring.charCodeAt(i);\r\n\t\t}\r\n\t\treturn String(result);\r\n\t} else {\r\n\t\treturn estring;\r\n\t}\r\n}\r\n\r\n/**\r\n * Decoding text on client side.\r\n * @param {string} estring the string to be decoded\r\n */\r\nfunction decodeChat(estring) {\r\n\tlet selectedDecoding = document.getElementById(\"client_decoding\").value;\r\n\tif (selectedDecoding == \"unicode\") {\r\n\t\t//Source: https://stackoverflow.com/questions/7885096/how-do-i-decode-a-string-with-escaped-unicode\r\n return estring.replace(/\\\\u([\\d\\w]{1,})/gi, function (match, group) {\r\n\t\t\treturn String.fromCharCode(parseInt(group, 16)); } );\r\n\t} else if (selectedDecoding == \"utf16\"){\t\r\n\t\t//Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\r\n\t\treturn String.fromCharCode.apply(null, new Uint16Array(estring.split(\",\")));\r\n\t} else {\r\n\t\treturn estring;\r\n\t}\r\n}\r\n\r\n/**\r\n * Decoding text on client side.\r\n * @param {string} estring the string to be decoded\r\n */\r\nfunction decodeBBCode(estring) {\r\n\treturn estring\r\n\t\t.replace(/\\\\n/g, \"<br>\") // Newline \\n\r\n\t\t.replace(/\\[(\\/?)b\\]/g, \"<$1b>\") // Bold [b][/b]\r\n\t\t.replace(/\\[(\\/?)i\\]/g, \"<$1i>\") // Italic [i][/i]\r\n\t\t.replace(/\\[(\\/?)del\\]/g, \"<$1del>\") // Deleted [del][/del]\r\n\t\t.replace(/\\[(\\/?)u\\]/g, \"<$1ins>\") // Underline [u][/u]\r\n\t\t.replace(/\\[(\\/?)sub\\]/g, \"<$1sub>\") // Subscript [sub][/sub]\r\n\t\t.replace(/\\[(\\/?)sup\\]/g, \"<$1sup>\") // Superscript [sup][/sup]\r\n\t\t.replace(/\\[m=([#a-zA-Z0-9]+)\\]/g, '<m a=\"$1\">') // Markup [m=#0ff]\r\n\t\t.replace(/\\[(\\/?)m\\]/g, '<$1m>') // [m][/m]\r\n\t\t.replace(/\\[c=?([#a-zA-Z0-9]+)\\]/g, '<c a=\"$1\">') // Color [c=red]\r\n\t\t.replace(/\\[\\/c\\]/g, '</c>'); // [/c]\r\n}\r\n\r\n\r\n// TODO: Possibly safe to remove, since we are using a transpiler.\r\nif (typeof(String.prototype.trim) === \"undefined\")\r\n{\r\n String.prototype.trim = function() \r\n {\r\n return String(this).replace(/^\\s+|\\s+$/g, '');\r\n };\r\n}\r\n\r\n// Used for HDID calculation.\r\nString.prototype.hashCode = function() {\r\n\tvar hash = 0, i, chr;\r\n\tif (this.length === 0) return hash;\r\n\tfor (i = 0; i < this.length; i++) {\r\n\t chr = this.charCodeAt(i);\r\n\t hash = ((hash << 5) - hash) + chr;\r\n\t hash |= 0; // Convert to 32bit integer\r\n\t}\r\n\treturn hash;\r\n};\r\n\r\n\r\n//\r\n// Client code\r\n//\r\n\r\nlet client = new Client(serverIP);\r\nlet viewport = new Viewport();\r\n\r\n$(document).ready(function(){\r\n\tclient.initialObservBBCode();\r\n\tclient.loadResources(); \r\n});\r\n"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./webAO/client.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","onOOCEnter","onEnter","musiclist_click","area_click","changeMusicVolume","changeSFXVolume","changeBlipVolume","changeCharacter","imgError","demoError","ReconnectButton","RetryButton","pickchar","pickemotion","pickevidence","addevidence","editevidence","delevidence","cancelevidence","getIndexFromSelect","updateEvidenceIcon","updateActionCommands","changeBackgroundOOC","changeRoleOOC","randomCharacterOOC","callmod","initwt","initce","updateBackgroundPreview","toggleaffect","toggleflip","togglepresent","togglemenu","toggleshout","queryDict","location","search","substr","split","forEach","item","serverIP","ip","AO_HOST","asset","MUSIC_HOST","oldLoading","test","navigator","userAgent","selectedEffect","selectedMenu","selectedShout","lastICMessageTime","Date","Client","address","_this","this","_classCallCheck","serv","WebSocket","onopen","evt","onOpen","onclose","onClose","onmessage","onMessage","onerror","onError","flip","presentable","playerID","charID","testimonyID","chars","emotes","evidences","resources","holdit","src","duration","objection","takethat","witnesstestimony","sfx","crossexamination","selectedEmote","selectedEvidence","checkUpdater","musicList","handlers","MS","args","handleMS","CT","handleCT","MC","handleMC","RMC","handleRMC","CI","handleCI","SC","handleSC","EI","handleEI","LE","handleLE","EM","handleEM","SM","handleSM","music","handlemusic","DONE","handleDONE","BN","handleBN","NBG","handleNBG","HP","handleHP","RT","handleRT","ZZ","handleZZ","ID","handleID","PN","handlePN","SI","handleSI","CharsCheck","handleCharsCheck","PV","handlePV","CHECK","_lastTimeICReceived","message","send","escapeChat","encodeChat","speaking","silent","side","ssfxname","zoom","ssfxdelay","evidence","flash","color","desc","img","id","msg","testimony","track","_this2","hashCode","setInterval","sendCheck","evidence_select","document","getElementById","add","Option","evidence_arr","length","background_select","background_arr","shouts","FileExist","callbackLoadImageResources","callbackLoadSFXResources","result","resource","client","viewport","getAnimLength","callbackGetResourceLength","target","MutationObserver","mutations","mutation","children","addedNodes","node","tagName","style","getAttribute","hasAttribute","backgroundColor","observe","attributes","childList","character","song","e","display","joinServer","console","error","reason","code","textContent","cleanup","data","debug","header","handler","warn","close","clearInterval","chatmsg","content","innerHTML","preanim","escape","nameplate","estring","replace","decodeBBCode","escapeHtml","decodeChat","unescapeChat","sound","type","snddelay","isnew","className","resetICParams","say","oocLog","scrollTop","scrollHeight","pause","play","appendICLog","Audio","totime","offset","getTime","addEventListener","currentTime","parseFloat","toFixed","chargs","icon","arg","filename","evidence_box","hmusiclist","newentry","createElement","text","options","flagAudio","newarea","onclick","appendChild","area_box","audio_title","lastChild","insertBefore","firstChild","removeChild","bgname","bg_index","selectedIndex","changeBackground","clip","initTestimonyUpdater","tr","td","icon_chosen","thispick","me","xhr","XMLHttpRequest","open","responseType","onload","status","linifile","responseText","pinifile","INI","parse","Options","Emotions","number","emoteinfo","esfx","esfxd","SoundN","SoundT","sfxdelay","button_off","button_on","Viewport","textnow","startpreanim","startspeaking","preanimdelay","blip","volume","blipChannels","Array","currentBlipChannel","sfxaudio","sfxplayed","updater","testimonyUpdater","testimonyTimer","shoutTimer","textTimer","_animating","clearTimeout","initUpdater","animdelay","parseInt","setTimeout","updateText","_this3","updateTestimony","callback","param","request","gifInfo","gify","getInfo","response","log","_this4","disposeTestimony","_this5","transform","opacity","height","shout","1","2","3","$","effect","direction","backgroundImage","right","left","animate","toggle","fontSize","offsetHeight","stylecolor","0","4","5","6","charAt","substring","regex","section","comment","line","match","event","keyCode","sendOOC","mychar","myemo","myEmote","myevi","myEvidence","myflip","mycolor","checked","sendIC","playtrack","sendMusicChange","el","setBlipVolume","sendLeaveRoom","image","url","xhttp","onreadystatechange","readyState","position","standname","bgfolder","bgFolder","callbackChangeBackground","toadd","arguments","undefined","time","entry","nameField","createTextNode","getMinutes","timeStamp","innerText","toLocaleTimeString","hour","minute","clientLog","ccharacter","sendCharacter","emo","icon_id","sendPE","sendEE","sendDE","select_box","select_element","evidence_filename","evidence_iconbox","role_select","bg_command","role_command","sendZZ","sendRT","background_filename","background_preview","menu","unsafe","selectedEncoding","ch","charCodeAt","toString","slice","buffer","ArrayBuffer","Uint16Array","strLen","String","selectedDecoding","group","fromCharCode","apply","window","trim","hash","ready","initialObservBBCode","loadResources"],"mappings":"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","file":"client.b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\r\n * Glorious webAO\r\n * made by sD, refactored by oldmud0\r\n * credits to aleks for original idea and source\r\n*/\r\n\r\nlet queryDict = {};\r\nlocation.search.substr(1).split(\"&\").forEach(function(item) {\r\n\tqueryDict[item.split(\"=\")[0]] = item.split(\"=\")[1]\r\n});\r\n\r\n/* Server magic */\r\n\r\nconst serverIP = queryDict.ip;\r\nlet mode = queryDict.mode;\r\n\r\nconst AO_HOST = queryDict.asset || \"http://assets.aceattorneyonline.com/base/\";\r\nconst MUSIC_HOST = AO_HOST + \"sounds/music/\";\r\nconst BAR_WIDTH = 90;\r\nconst BAR_HEIGHT = 20;\r\nconst CHAR_SELECT_WIDTH = 8;\r\nconst UPDATE_INTERVAL = 60;\r\n\r\nlet oldLoading = false;\r\nif (/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) {\r\n\toldLoading = true;\r\n}\r\n\r\nlet selectedEffect = 0;\r\nlet selectedMenu = 1;\r\nlet selectedShout = 0;\r\nlet lastICMessageTime = new Date(0);\r\n\r\nclass Client {\r\n\tconstructor(address) {\r\n\t\tthis.serv = new WebSocket(\"ws://\" + address);\r\n\r\n\t\tthis.serv.onopen = (evt) => this.onOpen(evt);\r\n\t\tthis.serv.onclose = (evt) => this.onClose(evt);\r\n\t\tthis.serv.onmessage = (evt) => this.onMessage(evt);\r\n\t\tthis.serv.onerror = (evt) => this.onError(evt);\r\n\t\t\r\n\t\tthis.flip = false;\r\n\t\tthis.presentable = false;\r\n\r\n\t\tthis.playerID = 1;\r\n\t\tthis.charID = -1;\r\n\t\tthis.testimonyID = 0;\r\n\r\n\t\tthis.chars = [];\r\n\t\tthis.emotes = [];\t\t\r\n\t\tthis.evidences = [];\r\n\t\t\r\n\t\tthis.resources = {\r\n\t\t\t\"holdit\":{\r\n\t\t\t\t\"src\": \"misc/holdit.gif\",\r\n\t\t\t\t\"duration\": 720\r\n\t\t\t},\r\n\t\t\t\"objection\":{\r\n\t\t\t\t\"src\": \"misc/objection.gif\",\r\n\t\t\t\t\"duration\": 720\r\n\t\t\t},\r\n\t\t\t\"takethat\":{\r\n\t\t\t\t\"src\": \"misc/takethat.gif\",\r\n\t\t\t\t\"duration\": 840\r\n\t\t\t},\r\n\t\t\t\"witnesstestimony\":{\r\n\t\t\t\t\"src\": \"misc/witnesstestimony.gif\",\r\n\t\t\t\t\"duration\": 1560,\r\n\t\t\t\t\"sfx\": \"sounds/general/sfx-testimony.wav\"\r\n\t\t\t},\r\n\t\t\t\"crossexamination\":{\r\n\t\t\t\t\"src\": \"misc/crossexamination.gif\",\r\n\t\t\t\t\"duration\": 1600,\r\n\t\t\t\t\"sfx\": \"sounds/general/sfx-testimony2.wav\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.selectedEmote = -1;\r\n\t\tthis.selectedEvidence = 0;\r\n\r\n\t\tthis.checkUpdater = null;\r\n\r\n\t\t// Only used for RMC/`music` packets, not EM/SM/MC packets.\r\n\t\tthis.musicList = Object();\r\n\r\n\t\tthis.handlers = {\r\n\t\t\t\"MS\": (args) => this.handleMS(args),\r\n\t\t\t\"CT\": (args) => this.handleCT(args),\r\n\t\t\t\"MC\": (args) => this.handleMC(args),\r\n\t\t\t\"RMC\": (args) => this.handleRMC(args),\r\n\t\t\t\"CI\": (args) => this.handleCI(args),\r\n\t\t\t\"SC\": (args) => this.handleSC(args),\r\n\t\t\t\"EI\": (args) => this.handleEI(args),\r\n\t\t\t\"LE\": (args) => this.handleLE(args),\r\n\t\t\t\"EM\": (args) => this.handleEM(args),\r\n\t\t\t\"SM\": (args) => this.handleSM(args),\r\n\t\t\t\"music\": (args) => this.handlemusic(args),\r\n\t\t\t\"DONE\": (args) => this.handleDONE(args),\r\n\t\t\t\"BN\": (args) => this.handleBN(args),\t\t\t\r\n\t\t\t\"NBG\": (args) => this.handleNBG(args),\r\n\t\t\t\"HP\": (args) => this.handleHP(args),\r\n\t\t\t\"RT\": (args) => this.handleRT(args),\r\n\t\t\t\"ZZ\": (args) => this.handleZZ(args),\r\n\t\t\t\"ID\": (args) => this.handleID(args),\r\n\t\t\t\"PN\": (args) => this.handlePN(args),\r\n\t\t\t\"SI\": (args) => this.handleSI(args),\r\n\t\t\t\"CharsCheck\": (args) => this.handleCharsCheck(args),\r\n\t\t\t\"PV\": (args) => this.handlePV(args),\r\n\t\t\t\"CHECK\": (args) => {}\r\n\t\t}\r\n\r\n\t\tthis._lastTimeICReceived = new Date(0);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current player's character.\r\n\t */\r\n\tme() {\r\n\t\treturn this.chars[this.charID];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the player's currently selected emote.\r\n\t */\r\n\tmyEmote() {\r\n\t\treturn this.emotes[this.selectedEmote];\r\n\t}\r\n\t\r\n\t/**\r\n\t * Gets the player's currently selected evidence if presentable.\r\n\t */\r\n\tmyEvidence() {\r\n\t\treturn (this.presentable)? this.selectedEvidence : 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Sends an out-of-character chat message.\r\n\t * @param {string} message the message to send\r\n\t */\r\n\tsendOOC(message) {\r\n\t\tthis.serv.send(`CT#web${this.playerID}#${escapeChat(encodeChat(message))}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends an in-character chat message.\r\n\t * @param {string} speaking who is speaking\r\n\t * @param {string} name the name of the current character\r\n\t * @param {string} silent whether or not it's silent\r\n\t * @param {string} message the message to be sent\r\n\t * @param {string} side the name of the side in the background\r\n\t * @param {string} ssfxname the name of the sound effect\r\n\t * @param {string} zoom whether or not to zoom\r\n\t * @param {string} ssfxdelay the delay (in milliseconds) to play the sound effect\r\n\t * @param {string} objection the number of the shout to play\r\n\t */\r\n\tsendIC(speaking, name, silent, message, side, ssfxname, zoom, ssfxdelay, objection, evidence, flip, flash, color) {\r\n\t\tthis.serv.send(\r\n\t\t\t`MS#chat#${speaking}#${name}#${silent}` +\r\n\t\t\t`#${escapeChat(encodeChat(message))}#${side}#${ssfxname}#${zoom}` +\r\n\t\t\t`#${this.charID}#${ssfxdelay}#${selectedShout}#${evidence}#${flip}#${flash}#${color}#%`\r\n\t\t);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sends add evidence command.\r\n\t * @param {string} evidence name\r\n\t * @param {string} evidence description\r\n\t * @param {string} evidence image filename\r\n\t */\r\n\tsendPE(name, desc, img) {\r\n\t\tthis.serv.send(`PE#${escapeChat(encodeChat(name))}#${escapeChat(encodeChat(desc))}#${img}#%`);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sends edit evidence command.\r\n\t * @param {string} evidence id\r\n\t * @param {string} evidence name\r\n\t * @param {string} evidence description\r\n\t * @param {string} evidence image filename\r\n\t */\r\n\tsendEE(id, name, desc, img) {\r\n\t\tthis.serv.send(`EE#${id}#${escapeChat(encodeChat(name))}#${escapeChat(encodeChat(desc))}#${img}#%`);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sends delete evidence command.\r\n\t * @param {string} evidence id\r\n\t */\r\n\tsendDE(id) {\r\n\t\tthis.serv.send(`DE#${id}#%`);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sends call mod command.\r\n\t * @param {string} message to mod\r\n\t */\r\n\tsendZZ(msg) {\r\n\t\tthis.serv.send(`ZZ#${msg}#%`);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Sends testimony command.\r\n\t * @param {string} testimony type\r\n\t */\r\n\tsendRT(testimony) {\r\n\t\tif(this.chars[this.charID].side == \"jud\"){\r\n\t\t\tthis.serv.send(`RT#${testimony}#%`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to change the music to the specified track.\r\n\t * @param {string} track the track ID\r\n\t */\r\n\tsendMusicChange(track) {\r\n\t\tthis.serv.send(`MC#${track}#${this.charID}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to leave the room and free the character slot.\r\n\t * \r\n\t * Note: This packet is undocumented. It is not implemented by\r\n\t * either the AO2 client or tsuserver.\r\n\t */\r\n\tsendLeaveRoom() {\r\n\t\tthis.serv.send(\"FC#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Begins the handshake process by sending an identifier\r\n\t * to the server.\r\n\t */\r\n\tjoinServer() {\r\n\t\tthis.serv.send(`HI#${navigator.userAgent.hashCode()}#%`);\r\n\t\tthis.serv.send(\"ID#webAO#2.4.5#%\");\r\n\t\tthis.checkUpdater = setInterval(() => this.sendCheck(), 5000);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Load game resources.\r\n\t */\r\n\tloadResources() {\r\n\t\t// Load evidence array to select\r\n\t\tvar evidence_select = document.getElementById(\"evi_select\");\r\n\t\tevidence_select.add(new Option(\"Custom\", 0));\r\n\t\tfor(let i = 1; i <= evidence_arr.length; i++) {\r\n\t\t evidence_select.add(new Option(evidence_arr[i - 1]));\r\n\t\t}\t\t\r\n\t\t// Load background array to select\r\n\t\tvar background_select = document.getElementById(\"bg_select\");\r\n\t\tbackground_select.add(new Option(\"Custom\", 0));\r\n\t\tfor(let i = 1; i <= background_arr.length; i++) {\r\n\t\t background_select.add(new Option(background_arr[i - 1]));\r\n\t\t}\r\n\t\t// Calculate gif duration of shouts\r\n\t\tlet shouts = [\"holdit\", \"objection\", \"takethat\"];\r\n\t\tfor (let i = 0; i < shouts.length; i++) {\r\n\t\t\tlet shout_src = AO_HOST + this.resources[shouts[i]][\"src\"];\r\n\t\t\tFileExist(shout_src, this.callbackLoadImageResources, shouts[i]);\t\t\r\n\t\t}\r\n\t\t\r\n\t\t// Calculate gif duration of testimony\r\n\t\tlet testimony = [\"witnesstestimony\", \"crossexamination\"];\r\n\t\tfor (let i = 0; i < testimony.length; i++) {\r\n\t\t\tlet testimony_src = AO_HOST + \"themes/default/\"+ testimony[i] +\".gif\";\r\n\t\t\t// Check iamge existed\r\n\t\t\tFileExist(testimony_src, this.callbackLoadImageResources, testimony[i]);\r\n\t\t\t// Check sfx existed\r\n\t\t\tFileExist(AO_HOST + this.resources[testimony[i]][\"sfx\"], this.callbackLoadSFXResources, testimony[i]);\r\n\t\t}\t\r\n\t\t// TODO: Cache some resources\r\n\t\t\r\n\t}\r\n\t\r\n\t/**\r\n\t * Callback for image resources.\r\n\t * @param {boolean} result the image is existed or not\r\n\t * @param {string} resource the resource name\r\n\t * @param {string} src the url of resource\r\n\t */\r\n\tcallbackLoadImageResources(result, resource, src) {\r\n\t\tif(result){\r\n\t\t\tclient.resources[resource][\"src\"] = src;\r\n\t\t\tviewport.getAnimLength(src,client.callbackGetResourceLength, resource);\r\n\t\t}\t\r\n\t}\r\n\t\r\n\t/**\r\n\t * Callback for animation duration resource\r\n\t * @param {integer} length the animation length\r\n\t * @param {string} resource the resource name\r\n\t */\r\n\tcallbackGetResourceLength(length, resource) {\r\n\t\tclient.resources[resource][\"duration\"] = length; \r\n\t}\r\n\t\r\n\t/**\r\n\t * Callback for sfx resources.\r\n\t * @param {boolean} result the audio is existed or not\r\n\t * @param {string} resource the resource name\r\n\t * @param {string} src the url of resource\r\n\t */\r\n\tcallbackLoadSFXResources(result, resource, src) {\r\n\t\tif(result){\r\n\t\t\tclient.resources[resource][\"sfx\"] = src;\r\n\t\t}\t\r\n\t}\t\r\n\t\r\n\t/**\r\n\t * Create observer to detect BBCode elements\r\n\t * then manipulate them.\r\n\t */\r\n\tinitialObservBBCode() {\r\n\t\tvar target = document.getElementById(\"client_inner_chat\");\r\n\t\tvar observer = new MutationObserver(function(mutations) {\r\n\t\t mutations.forEach(function(mutation) {\r\n\t\t\tvar children = mutation.addedNodes;\r\n\t\t\tif (children !== null) {\r\n\t\t\t\tchildren.forEach( function(node) {\r\n\t\t\t\t\tif (node.tagName == \"C\") {\r\n\t\t\t\t\t\tnode.style.color = node.getAttribute(\"a\");\r\n\t\t\t\t\t} else if(node.tagName == \"M\"){\r\n\t\t\t\t\t\tif (node.hasAttribute('a')) {\r\n\t\t\t\t\t\t\tnode.style.backgroundColor = node.getAttribute(\"a\");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tnode.style.backgroundColor = \"yellow\";\r\n\t\t\t\t\t\t\tnode.style.color = \"black\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t }); \r\n\t\t});\r\n\t\tvar config = {attributes: true,childList: true};\r\n\t\tobserver.observe(target,config);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to play as a specified character.\r\n\t * @param {number} character the character ID\r\n\t */\r\n\tsendCharacter(character) {\r\n\t\tthis.serv.send(`CC#${this.playerID}#${character}#web#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to select a music track.\r\n\t * @param {number?} song the song to be played\r\n\t */\r\n\tsendMusic(song) {\r\n\t\tthis.serv.send(`MC#${song}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends a keepalive packet.\r\n\t */\r\n\tsendCheck() {\r\n\t\tthis.serv.send(`CH#${this.charID}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when a connection is established to the server.\r\n\t */\r\n\tonOpen(e) {\r\n\t\t// XXX: Why does watching mean just SITTING there and doing nothing?\r\n\t\tif (mode === \"watch\") {\r\n\t\t\tdocument.getElementById(\"client_loading\").style.display = \"none\";\r\n\t\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\t} else {\r\n\t\t\tclient.joinServer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when the connection to the server closes.\r\n\t * @param {CloseEvent} e\r\n\t */\r\n\tonClose(e) {\r\n\t\tconsole.error(`The connection was closed: ${e.reason} (${e.code})`);\r\n\t\tif (e.code !== 1001) {\r\n\t\t\tdocument.getElementById(\"client_error\").style.display = \"block\";\r\n\t\t\tdocument.getElementById(\"error_id\").textContent = e.code;\r\n\t\t\tthis.cleanup();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when a packet is received from the server.\r\n\t * @param {MessageEvent} e\r\n\t */\r\n\tonMessage(e) {\r\n\t\tlet msg = e.data;\r\n\t\tconsole.debug(msg);\r\n\t\tlet lines = msg.split('%');\r\n\t\tlet args = lines[0].split('#');\r\n\t\tlet header = args[0];\r\n\t\tlet handler = this.handlers[header];\r\n\t\tif (typeof handler !== \"undefined\") {\r\n\t\t\thandler(args);\r\n\t\t} else {\r\n\t\t\tconsole.warn(`Invalid packet header ${header}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when an network error occurs.\r\n\t * @param {ErrorEvent} e \r\n\t */\r\n\tonError(e) {\r\n\t\tconsole.error(`A network error occurred: ${e.reason} (${e.code})`);\r\n\t\tdocument.getElementById(\"client_error\").style.display = \"block\";\r\n\t\tdocument.getElementById(\"error_id\").textContent = e.code;\r\n\t\tthis.cleanup();\r\n\t}\r\n\r\n\tcleanup() {\r\n\t\ttry {\r\n\t\t\tthis.serv.close(1001);\r\n\t\t} catch (e) {\r\n\t\t\t// I don't care if this errors\r\n\t\t}\r\n\t\tclearInterval(this.checkUpdater);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an in-character chat message.\r\n\t * @param {*} args packet arguments\r\n\t */\r\n\thandleMS(args) {\r\n\t\t// TODO: this if-statement might be a bug.\r\n\t\tif (args[4] != viewport.chatmsg.content) {\r\n\t\t\tdocument.getElementById(\"client_inner_chat\").innerHTML = \"\";\r\n\t\t\tlet chatmsg = {\r\n\t\t\t\t// pre: escape(args[2]),\r\n\t\t\t\tcharacter: -1, // Will do a linear search\r\n\t\t\t\tpreanim: escape(args[2]), // XXX: why again?\r\n\t\t\t\tnameplate: args[3], // TODO: parse INI to get this info\r\n\t\t\t\tname: args[3],\r\n\t\t\t\tspeaking: \"(b)\" + escape(args[4]),\r\n\t\t\t\tsilent: \"(a)\" + escape(args[4]),\r\n\t\t\t\tcontent: decodeBBCode(escapeHtml(decodeChat(unescapeChat(args[5])))), // Escape HTML tag, Use BBCode Only!\r\n\t\t\t\tside: args[6],\r\n\t\t\t\tsound: escape(args[7]),\r\n\t\t\t\ttype: args[8],\r\n\t\t\t\t// charid: args[9],\r\n\t\t\t\tsnddelay: args[10],\r\n\t\t\t\tobjection: args[11],\r\n\t\t\t\tevidence: args[12],\r\n\t\t\t\tflip: args[13],\r\n\t\t\t\tflash: args[14],\r\n\t\t\t\tcolor: args[15],\r\n\t\t\t\tisnew: true,\r\n\t\t\t};\r\n\r\n\t\t\t// The dreaded linear search...\r\n\t\t\tfor (let i = 0; i < this.chars.length; i++) {\r\n\t\t\t\tif (this.chars[i].name == args[3]) {\r\n\t\t\t\t\tchatmsg.character = i;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (chatmsg.character == this.charID) {\r\n\t\t\t\tresetICParams();\r\n\t\t\t}\r\n\r\n\t\t\tviewport.say(chatmsg);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an out-of-character chat message.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCT(args) {\r\n\t\tconst oocLog = document.getElementById(\"client_ooclog\");\r\n\t\toocLog.innerHTML += `${decodeChat(unescapeChat(args[1]))}: ${decodeChat(unescapeChat(args[2]))}\\r\\n`;\r\n\t\tif (oocLog.scrollTop > oocLog.scrollHeight - 60) {\r\n\t\t\toocLog.scrollTop = oocLog.scrollHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a music change to an arbitrary resource.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleMC(args) {\r\n\t\tconst music = viewport.music;\r\n\t\tmusic.pause();\r\n\t\tmusic.src = MUSIC_HOST + args[1];\r\n\t\tmusic.play();\r\n\t\tif (args[2] >= 0) {\r\n\t\t\tlet musicname = this.chars[args[2]].name;\r\n\t\t\tappendICLog(`${musicname} changed music to ${args[1]}`);\r\n\t\t} else {\r\n\t\t\tappendICLog(`The music was changed to ${args[1]}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a music change to an arbitrary resource, with an offset in seconds.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleRMC(args) {\r\n\t\tviewport.music.pause();\r\n\t\tviewport.music = new Audio(this.musicList[args[1]]);\r\n\t\tconst music = viewport.music;\r\n\t\t// Music offset + drift from song loading\r\n\t\tmusic.totime = args[1];\r\n\t\tmusic.offset = new Date().getTime() / 1000;\r\n\t\tmusic.addEventListener('loadedmetadata', function() {\r\n\t\t\tmusic.currentTime += parseFloat(music.totime + (new Date().getTime() / 1000 - music.offset)).toFixed(3);\r\n\t\t\tmusic.play();\r\n\t\t}, false);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming character information, bundling multiple characters\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCI(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Character \" + args[1];\r\n\t\tthis.serv.send(\"AN#\" + ((args[1] / 10) + 1) + \"#%\");\r\n\t\tfor (let i = 2; i < args.length - 1; i++) {\r\n\t\t\tif (i % 2 == 0) {\r\n\t\t\t\tlet chargs = args[i].split(\"&\");\r\n\t\t\t\tthis.chars[args[i - 1]] = {\r\n\t\t\t\t\t\"name\": chargs[0],\r\n\t\t\t\t\t\"desc\": chargs[1],\r\n\t\t\t\t\t\"evidence\": chargs[3],\r\n\t\t\t\t\t\"icon\": AO_HOST + \"characters/\" + escape(chargs[0]) + \"/char_icon.png\"\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming character information, containing only one character\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSC(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Characters\";\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\tlet chargs = args[i].split(\"&\");\r\n\t\t\tthis.chars[i - 1] = {\r\n\t\t\t\t\"name\": chargs[0],\r\n\t\t\t\t\"desc\": chargs[1],\r\n\t\t\t\t\"evidence\": chargs[3],\r\n\t\t\t\t\"icon\": AO_HOST + \"characters/\" + escape(chargs[0]) + \"/char_icon.png\"\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.serv.send(\"RM#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming evidence information, containing only one evidence\r\n\t * item per packet.\r\n\t * \r\n\t * Mostly unimplemented in webAO.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleEI(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Evidence \" + args[1];\r\n\t\t//serv.send(\"AE#\" + (args[1] + 1) + \"#%\");\r\n\t\tthis.serv.send(\"RM#%\");\r\n\t}\r\n\t\r\n\t/**\r\n\t * Handles incoming evidence list, all evidences at once\r\n\t * item per packet.\r\n\t * \r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleLE(args) {\r\n\t\tthis.evidences = [];\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\tvar arg = args[i].split(\"&\");\r\n\t\t\tthis.evidences[i - 1] = {\r\n\t\t\t\t\"name\": escapeHtml(decodeChat(unescapeChat(arg[0]))),\r\n\t\t\t\t\"desc\": escapeHtml(decodeChat(unescapeChat(arg[1]))),\r\n\t\t\t\t\"filename\": escape(arg[2]),\r\n\t\t\t\t\"icon\": AO_HOST + \"evidence/\" + escape(arg[2])\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar evidence_box = document.getElementById(\"evidences\");\r\n\t\tevidence_box.innerHTML = \"\";\r\n\t\tfor(let i = 1; i <= this.evidences.length; i++){\r\n\t\t\tevidence_box.innerHTML += '<img src=\"' + this.evidences[i - 1].icon + \r\n\t\t\t\t'\" id=\"evi_' + i +'\" alt=\"' + this.evidences[i - 1].name +\r\n\t\t\t\t'\" class=\"client_button\" ' +\r\n\t\t\t\t'onclick=\"pickevidence('+ i +')\">';\t\t\t\t\t\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing multiple entries\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleEM(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Music \" + args[1];\r\n\t\tthis.serv.send(\"AM#\" + ((args[1] / 10) + 1) + \"#%\");\r\n\t\tlet hmusiclist = document.getElementById(\"client_musiclist\");\r\n\t\tfor (let i = 2; i < args.length - 1; i++) {\r\n\t\t\tif (i % 2 == 0) {\r\n\t\t\t\tlet newentry = document.createElement(\"OPTION\");\r\n\t\t\t\tnewentry.text = args[i];\r\n\t\t\t\thmusiclist.options.add(newentry);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing only one entry\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSM(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Music \";\r\n\t\tlet hmusiclist = document.getElementById(\"client_musiclist\"), flagAudio = false;\r\n\t\t\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\t// Check when found the song for the first time\r\n\t\t\tif(/\\.(?:wav|mp3|mp4|ogg|mid)$/i.test(args[i]) && !flagAudio){\r\n\t\t\t\tflagAudio = true;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(flagAudio) {\r\n\t\t\t\t// After reached the audio put everything in the music list\r\n\t\t\t\tlet newentry = document.createElement(\"OPTION\");\r\n\t\t\t\tnewentry.text = args[i];\r\n\t\t\t\thmusiclist.options.add(newentry);\r\n\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\t// Create area button\r\n\t\t\t\tlet newarea = document.createElement(\"SPAN\");\r\n\t\t\t\tnewarea.className = \"location-box\";\r\n\t\t\t\tnewarea.textContent = args[i]; \r\n\t\t\t\tnewarea.onclick = function(){ area_click(this) };\r\n\t\t\t\tdocument.getElementById(\"areas\").appendChild(newarea);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// Move first audio title from area box to music list\r\n\t\tlet area_box = document.getElementById(\"areas\");\r\n\t\tlet audio_title = document.createElement(\"OPTION\");\r\n\t\taudio_title.text = area_box.lastChild.textContent;\r\n\t\thmusiclist.insertBefore(audio_title, hmusiclist.firstChild);\r\n\t\tarea_box.removeChild(area_box.lastChild); // Remove from arae box\r\n\t\t\t\t\r\n\t\tthis.serv.send(\"RD#%\");\t\t\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing all entries\r\n\t * in the same packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandlemusic(args) {\r\n\t\tfor (let i = 0; i < args.length / 2; i++) {\r\n\t\t\tthis.musicList[args[2 * i]] = args[2 * i + 1];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the handshake completion packet, meaning the player\r\n\t * is ready to select a character.\r\n\t * \r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleDONE(args) {\r\n\t\tdocument.getElementById(\"client_loading\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"block\";\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a background change.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleBN(args) {\r\n\t\tviewport.bgname = escape(args[1]);\r\n\t\tlet bg_index = getIndexFromSelect(\"bg_select\", escape(args[1]));\r\n\t\tdocument.getElementById(\"bg_select\").selectedIndex = bg_index;\r\n\t\tupdateBackgroundPreview();\r\n\t\tif(bg_index == 0){\r\n\t\t\tdocument.getElementById(\"bg_filename\").value = args[1];\r\n\t\t}\r\n\t\tdocument.getElementById(\"bg_preview\").src = AO_HOST + 'background/' + escape(args[1]) + \"/defenseempty.png\";\r\n\t\tif(this.charID == -1){\r\n\t\t\tchangeBackground(\"jud\");\r\n\t\t} else {\r\n\t\t\tchangeBackground(this.chars[this.charID].side);\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\thandleNBG(args) {\r\n\t\t// TODO (set by sD)\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a change in the health bars' states.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleHP(args) {\r\n\t\t// TODO (set by sD)\r\n\t\t// Also, this is broken.\r\n\t\tif (args[1] == 1) {\r\n\t\t\tdocument.getElementById(\"client_defense_hp\").style.clip = \"rect(0px,\" + BAR_WIDTH * args[2] / 10 + \"px,\" + BAR_HEIGHT + \"px,0px)\";\r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_prosecutor_hp\").style.clip = \"rect(0px,\" + BAR_WIDTH * args[2] / 10 + \"px,\" + BAR_HEIGHT + \"px,0px)\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Handles a testimony states.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleRT(args) {\r\n\t\tif (args[1] == \"testimony1\") {\r\n\t\t\t//Witness Testimony\r\n\t\t\tthis.testimonyID = 1;\r\n\t\t} else {\r\n\t\t\t//Cross Examination\r\n\t\t\tthis.testimonyID = 2;\r\n\t\t}\r\n\t\tviewport.initTestimonyUpdater();\r\n\t}\r\n\t\r\n\t/**\r\n\t * Handles a call mod message.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleZZ(args) {\r\n\t\tconst oocLog = document.getElementById(\"client_ooclog\");\r\n\t\toocLog.innerHTML += `\\$Alert: ${decodeChat(unescapeChat(args[1]))}\\r\\n`;\r\n\t\tif (oocLog.scrollTop > oocLog.scrollHeight - 60) {\r\n\t\t\toocLog.scrollTop = oocLog.scrollHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Handles a change in the health bars' states.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleHP(args) {\r\n\t\t// TODO (set by sD)\r\n\t\t// Also, this is broken.\r\n\t\tif (args[1] == 1) {\r\n\t\t\tdocument.getElementById(\"client_defense_hp\").style.clip = \"rect(0px,\" + BAR_WIDTH * args[2] / 10 + \"px,\" + BAR_HEIGHT + \"px,0px)\";\r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_prosecutor_hp\").style.clip = \"rect(0px,\" + BAR_WIDTH * args[2] / 10 + \"px,\" + BAR_HEIGHT + \"px,0px)\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Handles the issuance of a player ID by the server.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleID(args) {\r\n\t\tthis.playerID = args[1];\r\n\t}\r\n\r\n\thandlePN(args) {\r\n\t\tthis.serv.send(\"askchaa#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Received when the server announces its server info,\r\n\t * but we use it as a cue to begin retrieving characters.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSI(args) {\r\n\t\tif (oldLoading) {\r\n\t\t\tthis.serv.send(\"askchar2#%\");\r\n\t\t} else {\r\n\t\t\tthis.serv.send(\"RC#%\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the list of all used and vacant characters.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCharsCheck(args) {\r\n\t\tdocument.getElementById(\"client_chartable\").innerHTML = \"\";\r\n\t\tfor (let i = 0; i < this.chars.length; i++) {\r\n\t\t\tif (i % CHAR_SELECT_WIDTH == 0) {\r\n\t\t\t\tvar tr = document.createElement('TR');\r\n\t\t\t}\r\n\t\t\tlet td = document.createElement('TD');\r\n\t\t\tlet icon_chosen;\r\n\t\t\tlet thispick = this.chars[i].icon;\r\n\t\t\tif (args[i + 1] == \"-1\") {\r\n\t\t\t\ticon_chosen = \" dark\";\r\n\t\t\t} else {\r\n\t\t\t\ticon_chosen = \"\";\r\n\t\t\t}\r\n\t\t\ttd.innerHTML = `<img class='demothing${icon_chosen}' id='demo_${i}' ` +\r\n\t\t\t\t`src='${thispick}' alt='${this.chars[i].name}' onclick='pickchar(${i})' ` +\r\n\t\t\t\t`onerror='demoError(this);'>`;\r\n\t\t\ttr.appendChild(td);\r\n\t\t\tif (i % CHAR_SELECT_WIDTH == 0) {\r\n\t\t\t\tdocument.getElementById(\"client_chartable\").appendChild(tr);\r\n\t\t\t}\r\n\t\t}\t\t\r\n\t\t//changeBackground(\"def\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the server's assignment of a character for the player to use.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandlePV(args) {\r\n\t\tthis.charID = args[3];\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\tlet me = this.me();\r\n\t\tlet emotes = this.emotes;\r\n\t\tlet xhr = new XMLHttpRequest();\r\n\t\tdocument.getElementById(\"client_emo\").innerHTML = \"\"; // Clear emote box\r\n\t\txhr.open('GET', AO_HOST + 'characters/' + escape(this.me().name) + '/char.ini', true);\r\n\t\txhr.responseType = 'text';\r\n\t\txhr.onload = function (e) {\r\n\t\t\tif (this.status == 200) {\r\n\t\t\t\tlet linifile = this.responseText;\r\n\t\t\t\tlet pinifile = INI.parse(linifile);\r\n\t\t\t\tme.side = pinifile.Options.side;\r\n\t\t\t\tupdateActionCommands(me.side);\r\n\t\t\t\tfor (let i = 1; i < pinifile.Emotions.number; i++) {\r\n\t\t\t\t\tlet emoteinfo = pinifile.Emotions[i].split('#');\r\n\t\t\t\t\tlet esfx = \"0\";\r\n\t\t\t\t\tlet esfxd = \"0\";\r\n\t\t\t\t\tif (typeof pinifile.SoundN !== 'undefined') {\r\n\t\t\t\t\t\tesfx = pinifile.SoundN[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (typeof pinifile.SoundT !== 'undefined') {\r\n\t\t\t\t\t\tesfxd = pinifile.SoundT[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\temotes[i] = {\r\n\t\t\t\t\t\tdesc: emoteinfo[0],\r\n\t\t\t\t\t\tspeaking: emoteinfo[1],\r\n\t\t\t\t\t\tsilent: emoteinfo[2],\r\n\t\t\t\t\t\tzoom: emoteinfo[3],\r\n\t\t\t\t\t\tsfx: esfx,\r\n\t\t\t\t\t\tsfxdelay: esfxd,\r\n\t\t\t\t\t\tbutton_off: AO_HOST + 'characters/' + escape(me.name) + '/emotions/button' + i + '_off.png',\r\n\t\t\t\t\t\tbutton_on: AO_HOST + 'characters/' + escape(me.name) + '/emotions/button' + i + '_on.png'\r\n\t\t\t\t\t};\r\n\t\t\t\t\tdocument.getElementById(\"client_emo\").innerHTML += \"<img src='\" + emotes[i].button_off + \"' id='emo_\" + i + \"' alt='\" + emotes[i].desc + \"' class='client_button' onclick='pickemotion(\" + i + \")'>\";\r\n\t\t\t\t}\r\n\t\t\t\tpickemotion(1);\r\n\t\t\t}\r\n\t\t};\r\n\t\txhr.send();\r\n\t}\t\t\r\n}\r\n\r\nclass Viewport {\r\n\tconstructor() {\r\n\t\tthis.textnow = \"\";\r\n\t\tthis.chatmsg = {\r\n\t\t\t\"isnew\": false,\r\n\t\t\t\"content\": \"\",\r\n\t\t\t\"objection\": \"0\",\r\n\t\t\t\"sound\": \"\",\r\n\t\t\t\"startpreanim\": false,\r\n\t\t\t\"startspeaking\": false,\r\n\t\t\t\"side\": null,\r\n\t\t\t\"color\": \"0\",\r\n\t\t\t\"snddelay\": 0,\r\n\t\t\t\"preanimdelay\": 0\r\n\t\t};\r\n\t\tthis.blip = new Audio(AO_HOST + 'sounds/general/sfx-blipmale.wav');\r\n\t\tthis.blip.volume = 0.5;\r\n\r\n\t\t// Allocate multiple blip audio channels to make blips less jittery\r\n\r\n\t\t// TODO: read blip type (\"gender\") from ini\r\n\t\tthis.blipChannels = new Array(6);\r\n\t\tfor (let i = 0; i < this.blipChannels.length; i++) {\r\n\t\t\tthis.blipChannels[i] = new Audio(AO_HOST + 'sounds/general/sfx-blipmale.wav');\r\n\t\t\tthis.blipChannels[i].volume = 0.5;\r\n\t\t}\r\n\t\tthis.currentBlipChannel = 0;\r\n\r\n\t\tthis.sfxaudio = new Audio(AO_HOST + 'sounds/general/sfx-blipmale.wav');\r\n\t\tthis.sfxplayed = 0;\r\n\r\n\t\tthis.music = new Audio();\r\n\t\tthis.music.play();\r\n\r\n\t\tthis.updater = null;\r\n\t\tthis.testimonyUpdater = null;\r\n\r\n\t\tthis.bgname = \"gs4\";\r\n\t\t\r\n\t\tthis.testimonyTimer = 0;\r\n\t\tthis.shoutTimer = 0;\r\n\t\tthis.textTimer = 0;\r\n\r\n\t\tthis._animating = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns whether or not the viewport is busy\r\n\t * performing a task (animating).\r\n\t */\r\n\tisAnimating() {\r\n\t\treturn this._animating;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the volume of the blip sound.\r\n\t * @param {number} volume\r\n\t */\r\n\tsetBlipVolume(volume) {\r\n\t\tfor (let i = 0; i < this.blipChannels.length; i++) {\r\n\t\t\tthis.blipChannels[i].volume = volume;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the path which the background is located in.\r\n\t */\r\n\tbgFolder() {\r\n\t\treturn `${AO_HOST}background/${this.bgname}/`;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a new emote.\r\n\t * @param {object} chatmsg the new chat message\r\n\t */\r\n\tsay(chatmsg) {\r\n\t\tthis.chatmsg = chatmsg;\r\n\t\tappendICLog(chatmsg.content, chatmsg.nameplate);\r\n\t\tchangeBackground(chatmsg.side);\r\n\t\tthis.textnow = '';\r\n\t\tthis.sfxplayed = 0;\r\n\t\tthis.textTimer = 0;\r\n\t\tthis._animating = true;\r\n\t\tclearTimeout(this.updater);\r\n\t\t//If preanim existed then determine the length\r\n\t\tif (chatmsg.preanim != \"-\") {\r\n\t\t\tchatmsg.preanimdelay = this.getAnimLength(AO_HOST + 'characters/' + escape(chatmsg.name) + '/' + chatmsg.preanim + '.gif',this.initUpdater);\r\n\t\t} else {\r\n\t\t\tthis.initUpdater(0)\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Intialize updater\r\n\t * @param {int} animdelay the length of pre-animation \r\n\t */\r\n\tinitUpdater(animdelay){\r\n\t\tviewport.chatmsg.preanimdelay = parseInt(animdelay); \r\n\t\tviewport.updater = setTimeout(() => viewport.updateText(), UPDATE_INTERVAL);\r\n\t}\r\n\t\r\n\t/**\r\n\t * Intialize testimony updater \r\n\t */\r\n\tinitTestimonyUpdater(){\t\t\r\n\t\tif(client.testimonyID > 0){\t\t\t\r\n\t\t\tlet testimony = \"\";\r\n\t\t\tif (client.testimonyID == 1) {\r\n\t\t\t\ttestimony = \"witnesstestimony\";\t\t\t\t\r\n\t\t\t} else if (client.testimonyID == 2) {\r\n\t\t\t\ttestimony = \"crossexamination\";\r\n\t\t\t}\r\n\t\t\t(new Audio(client.resources[testimony][\"sfx\"])).play();\r\n\t\t\tthis.testimonyTimer = 0;\r\n\t\t\tdocument.getElementById(\"client_testimony\").src = client.resources[testimony][\"src\"];\r\n\t\t\tthis.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL);\t\t\t\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Gets animation length.\r\n\t * @param {string} filename the animation file name\r\n\t * @param {function} callback the callback function\r\n\t * @param {object} param \r\n\t */\r\n\tgetAnimLength(filename, callback, param) {\r\n\t\tvar request = new XMLHttpRequest();\r\n\t\trequest.open('GET', filename, true);\r\n\t\trequest.responseType = 'arraybuffer';\r\n\t\trequest.addEventListener('load', function () {\r\n\t\t\t// Use gify API\r\n\t\t\t// https://github.com/rfrench/gify\r\n\t\t\tvar gifInfo = gify.getInfo(request.response);\r\n\t\t\tconsole.log(gifInfo[\"duration\"]);\r\n\t\t\t// Return animation length\r\n\t\t\tcallback(gifInfo[\"duration\"], param);\r\n\t\t});\r\n\t\trequest.send();\r\n\t}\r\n\t\r\n\t/**\r\n\t * Updates the testimony overaly\r\n\t */\r\n\tupdateTestimony(){\r\n\t\t//Update timer\r\n\t\tthis.testimonyTimer = this.testimonyTimer + UPDATE_INTERVAL;\r\n\t\t\r\n\t\tif (client.testimonyID == 1) {\r\n\t\t\t//Witness Testimony\r\n\t\t\tif (this.testimonyTimer >= client.resources[\"witnesstestimony\"][\"duration\"]){\r\n\t\t\t\t//Finish\r\n\t\t\t\tthis.disposeTestimony();\r\n\t\t\t} else {\r\n\t\t\t\tthis.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL);\r\n\t\t\t}\t\t\t\r\n\t\t} else if (client.testimonyID == 2) {\r\n\t\t\t//Cross Examination\r\n\t\t\tif (this.testimonyTimer >= client.resources[\"crossexamination\"][\"duration\"]){\r\n\t\t\t\t//Finish\r\n\t\t\t\tthis.disposeTestimony();\r\n\t\t\t} else {\r\n\t\t\t\tthis.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.disposeTestimony();\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Dispose the testimony overlay\r\n\t */\r\n\t disposeTestimony(){\r\n\t\tclient.testimonyID = 0;\r\n\t\tthis.testimonyTimer = 0;\r\n\t\tdocument.getElementById(\"client_testimony\").src = \"misc/placeholder.gif\";\r\n\t\tclearTimeout(this.testimonyUpdater);\r\n\t }\r\n\t \r\n\t/**\r\n\t * Updates the chatbox based on the given text.\r\n\t * \r\n\t * XXX: This relies on a global variable `this.chatmsg`!\r\n\t */\r\n\tupdateText() {\r\n\t\t// Flip the character\r\n\t\tif (this.chatmsg.flip == 1){\r\n\t\t\tdocument.getElementById(\"client_char\").style.transform = \"scaleX(-1)\"; \r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_char\").style.transform = \"scaleX(1)\";\r\n\t\t}\r\n\t\t\t\r\n\t\tif (this._animating) {\r\n\t\t\tthis.updater = setTimeout(() => this.updateText(), UPDATE_INTERVAL);\r\n\t\t}\r\n\r\n\t\tif (this.chatmsg.isnew) {\r\n\t\t\t// Reset screen background\r\n\t\t\tdocument.getElementById(\"client_background\").style.backgroundColor = \"transparent\";\r\n\t\t\t//Hide message and evidence window\r\n\t\t\tdocument.getElementById(\"client_name\").style.display = \"none\";\r\n\t\t\tdocument.getElementById(\"client_chat\").style.display = \"none\";\r\n\t\t\tdocument.getElementById(\"client_evi\").style.opacity = \"0\";\r\n\t\t\tdocument.getElementById(\"client_evi\").style.height = \"0%\";\r\n\t\t\tconst shouts = {\r\n\t\t\t\t\"1\": \"holdit\",\r\n\t\t\t\t\"2\": \"objection\",\r\n\t\t\t\t\"3\": \"takethat\"\r\n\t\t\t};\r\n\r\n\t\t\tlet shout = shouts[this.chatmsg.objection];\r\n\t\t\tif (typeof shout !== \"undefined\") {\r\n\t\t\t\tdocument.getElementById(\"client_shout\").src = client.resources[shout][\"src\"];\r\n\t\t\t\t(new Audio(`${AO_HOST}/characters/${this.chatmsg.name}/${shout}.wav`)).play();\r\n\t\t\t\tthis.shoutTimer = 850;\r\n\t\t\t} else {\r\n\t\t\t\tthis.shoutTimer = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.chatmsg.isnew = false;\r\n\t\t\tthis.chatmsg.startpreanim = true;\r\n\t\t}\r\n\r\n\t\tif(this.textTimer >= this.shoutTimer && this.chatmsg.startpreanim) {\r\n\t\t\t// Effect stuff\r\n\t\t\tif (this.chatmsg.flash == 2){\r\n\t\t\t\t//Shake screen\r\n\t\t\t\tthis.sfxaudio.pause();\r\n\t\t\t\tthis.sfxplayed = 1;\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/sfx-stab.wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t\t$('#client_gamewindow').effect( \"shake\",{\"direction\":\"up\"});\r\n\t\t\t} else if (this.chatmsg.flash == 1) {\r\n\t\t\t\t//Flash screen\r\n\t\t\t\tdocument.getElementById(\"client_background\").style.backgroundColor = \"white\";\r\n\t\t\t\tthis.sfxaudio.pause();\r\n\t\t\t\tthis.sfxplayed = 1;\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/sfx-realization.wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t\t$('#client_gamewindow').effect(\"pulsate\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//Pre-animation stuff\r\n\t\t\tif(this.chatmsg.preanimdelay > 0){\r\n\t\t\t\tdocument.getElementById(\"client_shout\").src = \"misc/placeholder.gif\";\r\n\t\t\t\tchangeBackground(this.chatmsg.side);\r\n\t\t\t\tdocument.getElementById(\"client_char\").src = AO_HOST + \"characters/\" + escape(this.chatmsg.name) + \"/\" + this.chatmsg.preanim + \".gif\";\r\n\t\t\t}\r\n\t\t\tthis.chatmsg.startpreanim = false;\r\n\t\t\tthis.chatmsg.startspeaking = true;\r\n\t\t} else if (this.textTimer >= this.shoutTimer + this.chatmsg.preanimdelay && !this.chatmsg.startpreanim) {\r\n\t\t\tif (this.chatmsg.startspeaking) {\r\n\t\t\t\tif(this.chatmsg.evidence > 0){\r\n\t\t\t\t\t// Prepare evidence\r\n\t\t\t\t\tdocument.getElementById(\"client_evi\").style.backgroundImage = \"url('\"+ client.evidences[this.chatmsg.evidence - 1].icon +\"')\";\r\n\t\t\t\t\r\n\t\t\t\t\tif (this.chatmsg.side == 'def'){\r\n\t\t\t\t\t\t// Only def show evidence on right\r\n\t\t\t\t\t\tdocument.getElementById(\"client_evi\").style.right = \"1.5em\";\r\n\t\t\t\t\t\tdocument.getElementById(\"client_evi\").style.left = \"initial\";\r\n\t\t\t\t\t\t$( \"#client_evi\" ).animate({\r\n\t\t\t\t\t\t\theight: \"30%\",\r\n\t\t\t\t\t\t\topacity: 1\r\n\t\t\t\t\t\t}, 250 );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdocument.getElementById(\"client_evi\").style.right = \"initial\";\r\n\t\t\t\t\t\tdocument.getElementById(\"client_evi\").style.left = \"1.5em\";\r\n\t\t\t\t\t\t$( \"#client_evi\" ).animate({\r\n\t\t\t\t\t\t\theight: \"30%\",\r\n\t\t\t\t\t\t\topacity: 1\r\n\t\t\t\t\t\t}, 250 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t$(\"#client_name\").toggle( \"fade\" );\r\n\t\t\t\t$(\"#client_chat\").toggle(\"drop\",{\"direction\":\"down\"});\r\n\t\t\t\tif(this.chatmsg.preanimdelay == 0){\r\n\t\t\t\t\tdocument.getElementById(\"client_shout\").src = \"misc/placeholder.gif\";\r\n\t\t\t\t\tchangeBackground(this.chatmsg.side);\r\n\t\t\t\t}\r\n\t\t\t\tdocument.getElementById(\"client_char\").src = AO_HOST + \"characters/\" + escape(this.chatmsg.name) + \"/\" + this.chatmsg.speaking + \".gif\";\r\n\t\t\t\tdocument.getElementById(\"client_name\").style.fontSize = (document.getElementById(\"client_name\").offsetHeight * 0.7) + \"px\";\r\n\t\t\t\tdocument.getElementById(\"client_chat\").style.fontSize = (document.getElementById(\"client_chat\").offsetHeight * 0.25) + \"px\";\r\n\t\t\t\tdocument.getElementById(\"client_name\").innerHTML = \"<p>\" + escapeHtml(this.chatmsg.nameplate) + \"</p>\";\r\n\r\n\t\t\t\tconst colors = {\r\n\t\t\t\t\t\"0\": \"#ffffff\",\r\n\t\t\t\t\t\"1\": \"#00ff00\",\r\n\t\t\t\t\t\"2\": \"#ff0000\",\r\n\t\t\t\t\t\"3\": \"#ffaa00\",\r\n\t\t\t\t\t\"4\": \"#0000ff\",\r\n\t\t\t\t\t\"5\": \"#ffff00\",\r\n\t\t\t\t\t\"6\": \"#aa00aa\"\r\n\t\t\t\t}\r\n\t\t\t\tlet stylecolor = \"color: \" + (colors[this.chatmsg.color] || \"#ffffff\");\r\n\t\t\t\tdocument.getElementById(\"client_inner_chat\").style = stylecolor;\r\n\t\t\t\tthis.chatmsg.startspeaking = false;\r\n\r\n\t\t\t\tif (this.textnow == this.chatmsg.content) {\r\n\t\t\t\t\tdocument.getElementById(\"client_char\").src = AO_HOST + \"characters/\" + escape(this.chatmsg.name) + \"/\" + this.chatmsg.silent + \".gif\";\r\n\t\t\t\t\tthis._animating = false;\r\n\t\t\t\t\tclearTimeout(this.updater);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.textnow != this.chatmsg.content) {\r\n\t\t\t\t\tif (this.chatmsg.content.charAt(this.textnow.length) != \" \") {\r\n\t\t\t\t\t\tthis.blipChannels[this.currentBlipChannel].play();\r\n\t\t\t\t\t\tthis.currentBlipChannel++;\r\n\t\t\t\t\t\tthis.currentBlipChannel %= this.blipChannels.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.textnow = this.chatmsg.content.substring(0, this.textnow.length + 1);\r\n\t\t\t\t\tdocument.getElementById(\"client_inner_chat\").innerHTML = this.textnow;\r\n\t\t\t\t\tif (this.textnow == this.chatmsg.content) {\r\n\t\t\t\t\t\tthis.textTimer = 0;\r\n\t\t\t\t\t\tthis._animating = false;\r\n\t\t\t\t\t\tdocument.getElementById(\"client_char\").src = AO_HOST + \"characters/\" + escape(this.chatmsg.name) + \"/\" + this.chatmsg.silent + \".gif\";\r\n\t\t\t\t\t\tclearTimeout(this.updater);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.sfxplayed && this.chatmsg.snddelay + this.shoutTimer >= this.textTimer) {\r\n\t\t\tthis.sfxaudio.pause();\r\n\t\t\tthis.sfxplayed = 1;\r\n\t\t\tif (this.chatmsg.sound != \"0\" && this.chatmsg.sound != \"1\") {\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/\" + escape(this.chatmsg.sound) + \".wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.textTimer = this.textTimer + UPDATE_INTERVAL;\r\n\t}\r\n}\r\n\r\nclass INI {\r\n\tstatic parse(data) {\r\n\t\tlet regex = {\r\n\t\t\tsection: /^\\s*\\[\\s*([^\\]]*)\\s*\\]\\s*$/,\r\n\t\t\tparam: /^\\s*([\\w\\.\\-\\_]+)\\s*=\\s*(.*?)\\s*$/,\r\n\t\t\tcomment: /^\\s*;.*$/\r\n\t\t};\r\n\t\tlet value = {};\r\n\t\tlet lines = data.split(/\\r\\n|\\r|\\n/);\r\n\t\tlet section = null;\r\n\t\tlines.forEach(function(line) {\r\n\t\t\tif (regex.comment.test(line)) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if (line.length == 0) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if (regex.param.test(line)) {\r\n\t\t\t\tlet match = line.match(regex.param);\r\n\t\t\t\tif (section) {\r\n\t\t\t\t\tvalue[section][match[1]] = match[2];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalue[match[1]] = match[2];\r\n\t\t\t\t}\r\n\t\t\t} else if (regex.section.test(line)) {\r\n\t\t\t\tlet match = line.match(regex.section);\r\n\t\t\t\tvalue[match[1]] = {};\r\n\t\t\t\tsection = match[1];\r\n\t\t\t};\r\n\t\t});\r\n\t\treturn value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Triggered when the Return key is pressed on the out-of-character chat input box.\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function onOOCEnter(event) {\r\n\tif (event.keyCode == 13) {\r\n\t\tclient.sendOOC(document.getElementById(\"client_oocinputbox\").value);\r\n\t\tdocument.getElementById(\"client_oocinputbox\").value = \"\";\r\n\t}\r\n}\r\nwindow.onOOCEnter = onOOCEnter;\r\n\r\n/**\r\n * Triggered when the Return key is pressed on the in-character chat input box.\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function onEnter(event) {\r\n\tif (event.keyCode == 13) {\r\n\t\tlet mychar = client.me();\r\n\t\tlet myemo = client.myEmote();\r\n\t\tlet myevi = client.myEvidence();\r\n\t\tlet myflip = ((client.flip)? 1:0);\r\n\t\tlet mycolor = document.getElementById(\"textcolor\").value;\r\n\t\tlet ssfxname = \"0\";\r\n\t\tlet ssfxdelay = \"0\";\r\n\t\tif (document.getElementById(\"sendsfx\").checked) {\r\n\t\t\tssfxname = myemo.sfx;\r\n\t\t\tssfxdelay = myemo.sfxdelay;\r\n\t\t}\r\n\t\tclient.sendIC(myemo.speaking, mychar.name, myemo.silent, document.getElementById(\"client_inputbox\").value, mychar.side, ssfxname, myemo.zoom, ssfxdelay, selectedShout, myevi, myflip, selectedEffect, mycolor);\r\n\t}\r\n}\r\nwindow.onEnter = onEnter;\r\n\r\n/**\r\n * Resets the IC parameters for the player to enter a new chat message.\r\n * This should only be called when the player's previous chat message\r\n * was successfully sent/presented.\r\n */\r\nfunction resetICParams() {\r\n\tdocument.getElementById(\"client_inputbox\").value = \"\";\r\n\tif (selectedEffect) {\r\n\t\tdocument.getElementById(\"button_effect_\" + selectedEffect).className = \"client_button\";\r\n\t\tselectedEffect = 0;\r\n\t}\r\n\tif (selectedShout) {\r\n\t\tdocument.getElementById(\"button_\" + selectedShout).className = \"client_button\";\r\n\t\tselectedShout = 0;\r\n\t}\t\t\r\n}\r\n\r\n/**\r\n * Triggered when an item on the music list is clicked.\r\n * @param {MouseEvent} event\r\n */\r\nexport function musiclist_click(event) {\r\n\tlet playtrack = document.getElementById(\"client_musiclist\").value;\r\n\tclient.sendMusicChange(playtrack);\r\n}\r\nwindow.musiclist_click = musiclist_click;\r\n\r\n/**\r\n * Triggered when an item on the music list is clicked.\r\n * @param {MouseEvent} event\r\n */\r\nexport function area_click(el) {\r\n\tlet playtrack = el.textContent;\r\n\tclient.sendMusicChange(playtrack);\r\n}\r\nwindow.area_click = area_click;\r\n\r\n/**\r\n * Triggered by the music volume slider.\r\n */\r\nexport function changeMusicVolume() {\r\n\tviewport.music.volume = document.getElementById(\"client_mvolume\").value / 100;\r\n}\r\nwindow.changeMusicVolume = changeMusicVolume;\r\n\r\n/**\r\n * Triggered by the sound effect volume slider.\r\n */\r\nexport function changeSFXVolume() {\r\n\tviewport.sfxaudio.volume = document.getElementById(\"client_svolume\").value / 100;\r\n}\r\nwindow.changeSFXVolume = changeSFXVolume;\r\n\r\n/**\r\n * Triggered by the blip volume slider.\r\n */\r\nexport function changeBlipVolume() {\r\n\tviewport.setBlipVolume(document.getElementById(\"client_bvolume\").value / 100);\r\n}\r\nwindow.changeBlipVolume = changeBlipVolume;\r\n\r\n/**\r\n * Triggered when a character icon is clicked in the character selection menu.\r\n * @param {MouseEvent} event\r\n */\r\nexport function changeCharacter(event) {\r\n\tclient.sendLeaveRoom();\r\n\tdocument.getElementById(\"client_charselect\").style.display = \"block\";\r\n\tdocument.getElementById(\"client_emo\").innerHTML = \"\";\r\n}\r\nwindow.changeCharacter = changeCharacter;\r\n\r\n/**\r\n * Triggered when there was an error loading a character sprite.\r\n * @param {HTMLImageElement} image the element containing the missing image\r\n */\r\nexport function imgError(image) {\r\n\timage.onerror = \"\";\r\n\timage.src = \"misc/placeholder.gif\";\r\n\treturn true;\r\n}\r\nwindow.imgError = imgError;\r\n\r\n/**\r\n * Triggered when there was an error loading a character icon.\r\n * @param {HTMLImageElement} image the element containing the missing image\r\n */\r\nexport function demoError(image) {\r\n\timage.onerror = \"\";\r\n\timage.src = \"/misc/placeholder.png\";\r\n\treturn true;\r\n}\r\nwindow.demoError = demoError;\r\n\r\n/**\r\n * Checks if an file exists at the specified URI.\r\n * @param {string} url the URI to be checked\r\n * @param {function} callback the function to be called when finished\r\n * @param {object} param \r\n */\r\nfunction FileExist(url,callback,param) {\r\n\tvar xhttp = new XMLHttpRequest();\r\n\txhttp.onreadystatechange = function() {\r\n\t\tif (this.readyState == 4 && this.status == 200) {\r\n\t\t\tcallback(true, param, url);\r\n\t\t} else {\r\n\t\t\tcallback(false, param, url);\r\n\t\t}\r\n\t};\r\n\txhttp.open(\"GET\", url, true);\r\n\txhttp.send();\r\n}\r\n\r\n/**\r\n * Changes the viewport background based on a given position.\r\n * \r\n * Valid positions: `def, pro, hld, hlp, wit, jud`\r\n * @param {string} position the position to change into\r\n */\r\nfunction changeBackground(position) {\r\n\tvar standname;\r\n\tlet bgfolder = viewport.bgFolder();\r\n\tdocument.getElementById(\"client_fg\").style.display = \"none\";\r\n\tdocument.getElementById(\"client_bench\").style.display = \"none\";\r\n\tswitch (position) {\r\n\t\tcase \"def\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"defenseempty.png\"\r\n\t\t\tdocument.getElementById(\"client_bench\").style.display = \"block\";\r\n\t\t\tFileExist(bgfolder + \"defensedesk.png\", callbackChangeBackground, position);\r\n\t\t\tstandname = \"defense\";\r\n\t\t\tbreak;\r\n\t\tcase \"pro\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"prosecutorempty.png\"\r\n\t\t\tdocument.getElementById(\"client_bench\").style.display = \"block\"\r\n\t\t\tFileExist(bgfolder + \"defensedesk.png\", callbackChangeBackground, position);\r\n\t\t\tstandname = \"prosecution\";\r\n\t\t\tbreak;\r\n\t\tcase \"hld\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"helperstand.png\"\r\n\t\t\tstandname = \"defense\";\r\n\t\t\tbreak;\r\n\t\tcase \"hlp\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"prohelperstand.png\"\r\n\t\t\tstandname = \"prosecution\";\r\n\t\t\tbreak;\r\n\t\tcase \"wit\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"witnessempty.png\"\r\n\t\t\tdocument.getElementById(\"client_bench\").style.display = \"block\"\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"estrado.png\"\r\n\t\t\tstandname = \"prosecution\";\r\n\t\t\tbreak;\r\n\t\tcase \"jud\":\r\n\t\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"judgestand.png\"\r\n\t\t\tstandname = \"prosecution\";\r\n\t\t\tbreak;\r\n\t}\r\n\tif (viewport.chatmsg.type == 5) {\r\n\t\tdocument.getElementById(\"client_bench\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_court\").src = AO_HOST + \"themes/default/\" + standname + \"_speedlines.gif\";\r\n\t}\r\n}\r\n\r\n/**\r\n * Callback for desk resource\r\n * \r\n * Valid positions: `def, pro, hld, hlp, wit, jud`\r\n * @param {boolean} result the image is existed or not\r\n * @param {string} position the position to change into\r\n */\r\nfunction callbackChangeBackground(result,position) {\r\n\tlet bgfolder = viewport.bgFolder();\r\n\tif (position == \"def\"){\r\n\t\tif(result){\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"defensedesk.png\"\r\n\t\t}else{\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"bancodefensa.png\"\r\n\t\t}\r\n\t} else {\r\n\t\tif(result){\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"prosecutiondesk.png\"\r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"bancoacusacion.png\"\r\n\t\t}\t\t\t\r\n\t}\r\n}\r\n\r\n/**\r\n * Triggered when the reconnect button is pushed.\r\n */\r\nexport function ReconnectButton() {\r\n\tclient.cleanup();\r\n\tclient = new Client(serverIP);\r\n\tif (client) {\r\n\t\tmode = \"join\"; // HACK: see client.onOpen\r\n\t\tdocument.getElementById(\"client_error\").style.display = \"none\";\r\n\t}\r\n}\r\nwindow.ReconnectButton = ReconnectButton;\r\n\r\n/**\r\n * Triggered when the retry button is pushed (during the loading process).\r\n */\r\nexport function RetryButton() {\r\n\tclient.joinServer();\r\n}\r\nwindow.RetryButton = RetryButton;\r\n\r\n/**\r\n * Appends a message to the in-character chat log.\r\n * @param {string} toadd the string to be added\r\n * @param {string} name the name of the sender\r\n */\r\nfunction appendICLog(toadd, name = \"\", time = new Date()) {\r\n\tconst entry = document.createElement(\"p\");\r\n\tconst nameField = document.createElement(\"span\");\r\n\tnameField.id = \"iclog_name\";\r\n\tnameField.appendChild(document.createTextNode(name));\r\n\tentry.appendChild(nameField);\r\n\tentry.appendChild(document.createTextNode(toadd));\r\n\r\n\t// Only put a timestamp if the minute has changed.\r\n\tif (lastICMessageTime.getMinutes() !== time.getMinutes()) {\r\n\t\tconst timeStamp = document.createElement(\"span\");\r\n\t\ttimeStamp.id = \"iclog_time\";\r\n\t\ttimeStamp.innerText = time.toLocaleTimeString(undefined, {\r\n\t\t\thour: \"numeric\",\r\n\t\t\tminute: \"2-digit\"\r\n\t\t});\r\n\t\tentry.appendChild(timeStamp);\r\n\t}\r\n\r\n\tconst clientLog = document.getElementById(\"client_log\");\r\n\tclientLog.appendChild(entry);\r\n\r\n\tif (clientLog.scrollTop > clientLog.scrollHeight - 600) {\r\n\t\tclientLog.scrollTop = clientLog.scrollHeight;\r\n\t}\r\n\r\n\tlastICMessageTime = new Date();\r\n}\r\n\r\n/**\r\n * Requests to play as a character.\r\n * @param {number} ccharacter the character ID; if this is a large number, then spectator is chosen instead.\r\n */\r\nexport function pickchar(ccharacter) {\r\n\tif (ccharacter < 1000) {\r\n\t\tclient.sendCharacter(ccharacter);\r\n\t} else {\r\n\t\t// Spectator\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_inputbox\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_emo\").style.display = \"none\";\r\n\t}\r\n}\r\nwindow.pickchar = pickchar;\r\n\r\n/**\r\n * Highlights and selects an emotion for in-character chat.\r\n * @param {string} emo the new emotion to be selected\r\n */\r\nexport function pickemotion(emo) {\r\n\tif (client.selectedEmote != -1) {\r\n\t\tdocument.getElementById(\"emo_\" + client.selectedEmote).src = client.myEmote().button_off;\r\n\t}\r\n\tclient.selectedEmote = emo\r\n\tdocument.getElementById(\"emo_\" + emo).src = client.myEmote().button_on;\r\n}\r\nwindow.pickemotion = pickemotion;\r\n\r\n/**\r\n * Highlights and selects an evidence for in-character chat.\r\n * @param {string} evidence the evidence to be presented\r\n */\r\nexport function pickevidence(evidence) {\r\n\tif (client.selectedEvidence != evidence) {\r\n\t\t//Update selected evidence\t\t\r\n\t\tif(client.selectedEvidence > 0){\r\n\t\t\tdocument.getElementById(\"evi_\" + client.selectedEvidence).className = \"client_button\";\r\n\t\t}\r\n\t\tdocument.getElementById(\"evi_\" + evidence).className = \"client_button dark\";\r\n\t\tclient.selectedEvidence = evidence;\r\n\t\t\r\n\t\t// Show evidence on information window\r\n\t\tdocument.getElementById(\"evi_name\").value = client.evidences[evidence - 1].name;\r\n\t\tdocument.getElementById(\"evi_desc\").value = client.evidences[evidence - 1].desc;\r\n\r\n\t\t//Update Icon\r\n\t\tlet icon_id = getIndexFromSelect(\"evi_select\", client.evidences[evidence - 1].filename);\r\n\t\tdocument.getElementById(\"evi_select\").selectedIndex = icon_id;\r\n\t\tif (icon_id == 0){\t\t\t\r\n\t\t\tdocument.getElementById(\"evi_filename\").value = client.evidences[evidence - 1].filename;\r\n\t\t}\r\n\t\tupdateEvidenceIcon();\r\n\t\t\r\n\t\t// Update button\r\n\t\tdocument.getElementById(\"evi_add\").className = \"client_button hover_button inactive\";\r\n\t\tdocument.getElementById(\"evi_edit\").className = \"client_button hover_button\";\r\n\t\tdocument.getElementById(\"evi_cancel\").className = \"client_button hover_button\";\r\n\t\tdocument.getElementById(\"evi_del\").className = \"client_button hover_button\";\r\n\t} else {\r\n\t\tcancelevidence();\r\n\t}\r\n}\r\nwindow.pickevidence = pickevidence;\r\n\r\n/**\r\n * Add evidence.\r\n */\r\nexport function addevidence() {\r\n\tlet evidence_select = document.getElementById('evi_select');\r\n\tclient.sendPE( document.getElementById('evi_name').value,\r\n\t\tdocument.getElementById('evi_desc').value,\r\n\t\t(evidence_select.selectedIndex == 0)? \r\n\t\t\tdocument.getElementById('evi_filename').value : \r\n\t\t\tevidence_select.options[evidence_select.selectedIndex].text \r\n\t\t);\r\n\tcancelevidence();\r\n}\r\nwindow.addevidence = addevidence;\r\n\r\n/**\r\n * Edit selected evidence.\r\n */\r\nexport function editevidence() {\r\n\tlet evidence_select = document.getElementById('evi_select');\r\n\tlet id = parseInt(client.selectedEvidence) - 1;\r\n\tclient.sendEE( id, \r\n\t\tdocument.getElementById('evi_name').value,\r\n\t\tdocument.getElementById('evi_desc').value,\r\n\t\t(evidence_select.selectedIndex == 0)? \r\n\t\t\tdocument.getElementById('evi_filename').value : \r\n\t\t\tevidence_select.options[evidence_select.selectedIndex].text \r\n\t\t);\r\n\tcancelevidence();\r\n}\r\nwindow.editevidence = editevidence;\r\n\r\n/**\r\n * Delete selected evidence.\r\n */\r\nexport function delevidence() {\r\n\tlet id = parseInt(client.selectedEvidence) - 1;\r\n\tclient.sendDE(id);\r\n\tcancelevidence();\r\n}\r\nwindow.delevidence = delevidence;\r\n\r\n/**\r\n * Cancel evidence selection.\r\n */\r\nexport function cancelevidence() {\r\n\t//Clear evidence data\r\n\tif(client.selectedEvidence > 0){\r\n\t\tdocument.getElementById(\"evi_\" + client.selectedEvidence).className = \"client_button\";\r\n\t}\r\n\tclient.selectedEvidence = 0;\r\n\t\r\n\t// Clear evidence on information window\r\n\tdocument.getElementById(\"evi_select\").selectedIndex = 0;\r\n\tupdateEvidenceIcon(); // Update icon widget\r\n\tdocument.getElementById(\"evi_filename\").value = \"\";\r\n\tdocument.getElementById(\"evi_name\").value = \"\";\r\n\tdocument.getElementById(\"evi_desc\").value = \"\";\r\n\tdocument.getElementById(\"evi_icon\").style.backgroundImage = \"url('misc/empty.png')\"; //Clear icon\r\n\t\r\n\t// Update button\r\n\tdocument.getElementById(\"evi_add\").className = \"client_button hover_button\";\r\n\tdocument.getElementById(\"evi_edit\").className = \"client_button hover_button inactive\";\r\n\tdocument.getElementById(\"evi_cancel\").className = \"client_button hover_button inactive\";\r\n\tdocument.getElementById(\"evi_del\").className = \"client_button hover_button inactive\";\r\n}\r\nwindow.cancelevidence = cancelevidence;\r\n\r\n/**\r\n * Find index of anything in select box.\r\n * @param {string} select_box the select element name\r\n * @param {string} value the value that need to be compared\r\n */\r\nexport function getIndexFromSelect(select_box, value) {\r\n\t\t//Find if icon alraedy existed in select box\r\n\t\tlet select_element = document.getElementById(select_box);\r\n\t\tfor (let i = 1; i < select_element.length; ++i){\r\n\t\t\tif (select_element.options[i].value == value){\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 0;\r\n}\r\nwindow.getIndexFromSelect = getIndexFromSelect;\r\n\r\n/**\r\n * Update evidence icon.\r\n */\r\nexport function updateEvidenceIcon() {\r\n\tlet evidence_select = document.getElementById(\"evi_select\");\r\n\tlet evidence_filename = document.getElementById(\"evi_filename\");\r\n\tlet evidence_iconbox = document.getElementById(\"evi_icon\");\r\n\t\r\n\tif (evidence_select.selectedIndex == 0) {\r\n\t\tevidence_filename.style.display = \"initial\";\r\n\t\tevidence_iconbox.style.backgroundImage = \"url('\" + AO_HOST + 'evidence/' + evidence_filename.value + \"')\";\r\n\t} else {\t\t\r\n\t\tevidence_filename.style.display = \"none\";\r\n\t\tevidence_iconbox.style.backgroundImage = \"url('\" + AO_HOST + 'evidence/' + evidence_select.value + \"')\" ;\r\n\t}\r\n}\r\nwindow.updateEvidenceIcon = updateEvidenceIcon;\r\n\r\n/**\r\n * Update evidence icon.\r\n */\r\nexport function updateActionCommands(side) {\r\n\tif(side == \"jud\"){\r\n\t\tdocument.getElementById(\"menu_wt\").style.display = \"inline-table\";\r\n\t\tdocument.getElementById(\"menu_ce\").style.display = \"inline-table\";\r\n\t} else {\r\n\t\tdocument.getElementById(\"menu_wt\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"menu_ce\").style.display = \"none\";\r\n\t}\r\n\t//Update role selector\r\n\tfor(let i = 0, role_select = document.getElementById(\"role_select\").options; i < role_select.length; i++){\r\n\t\t\tif(side == role_select[i].value){\r\n\t\t\t\trole_select.selectedIndex = i;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t}\r\n}\r\nwindow.updateActionCommands = updateActionCommands;\r\n\r\n/**\r\n * Change background via OOC.\r\n */\r\nexport function changeBackgroundOOC() {\r\n\tlet filename = \"\", background_select = document.getElementById(\"bg_select\")\r\n\t\t, bg_command = document.getElementById(\"bg_command\").value;\r\n\tif (background_select.selectedIndex == 0) {\r\n\t\tfilename = document.getElementById(\"bg_filename\").value; \r\n\t} else{\r\n\t\tfilename = background_select.value;\r\n\t}\r\n\tclient.sendOOC(\"/\" + bg_command.replace(\"$1\",filename));\r\n}\r\nwindow.changeBackgroundOOC = changeBackgroundOOC;\r\n\r\n/**\r\n * Change role via OOC.\r\n */\r\nexport function changeRoleOOC() {\r\n\tlet role_select = document.getElementById(\"role_select\")\r\n\t\t, role_command = document.getElementById(\"role_command\").value;\r\n\t\t\r\n\tclient.sendOOC(\"/\" + role_command.replace(\"$1\",role_select.value));\r\n\tupdateActionCommands(role_select.value);\r\n}\r\nwindow.changeRoleOOC = changeRoleOOC;\r\n\r\n/**\r\n * Random character via OOC.\r\n */\r\nexport function randomCharacterOOC() {\t\t\r\n\tclient.sendOOC(\"/\" + document.getElementById(\"randomchar_command\").value);\r\n}\r\nwindow.randomCharacterOOC = randomCharacterOOC;\r\n\r\n/**\r\n * Call mod.\r\n */\r\nexport function callmod() {\t\t\r\n\tclient.sendZZ(\"\");\r\n}\r\nwindow.callmod = callmod;\r\n\r\n/**\r\n * Decalre witness testimony.\r\n */\r\nexport function initwt() {\t\t\r\n\tclient.sendRT(\"testimony1\");\r\n}\r\nwindow.initwt = initwt;\r\n\r\n/**\r\n * Decalre cross examination.\r\n */\r\nexport function initce() {\t\t\r\n\tclient.sendRT(\"testimony2\");\r\n}\r\nwindow.initce = initce;\r\n\r\n/**\r\n * Update background preview.\r\n */\r\nexport function updateBackgroundPreview() {\r\n\tlet background_select = document.getElementById(\"bg_select\");\r\n\tlet background_filename = document.getElementById(\"bg_filename\");\r\n\tlet background_preview = document.getElementById(\"bg_preview\");\r\n\t\r\n\tif (background_select.selectedIndex == 0) {\r\n\t\tbackground_filename.style.display = \"initial\";\r\n\t\tbackground_preview.src = AO_HOST + 'background/' + background_filename.value + \"/defenseempty.png\";\r\n\t} else {\r\n\t\tbackground_filename.style.display = \"none\";\r\n\t\tbackground_preview.src = AO_HOST + 'background/' + background_select.value + \"/defenseempty.png\";\r\n\t}\r\n}\r\nwindow.updateBackgroundPreview = updateBackgroundPreview;\r\n\r\n/**\r\n * Highlights and selects an effect for in-character chat.\r\n * If the same effect button is selected, then the effect is canceled.\r\n * @param {string} effect the new effect to be selected\r\n */\r\nexport function toggleaffect(effect) {\r\n\tif (effect == selectedEffect) {\r\n\t\tdocument.getElementById(\"button_effect_\" + effect).className = \"client_button\";\r\n\t\tselectedEffect = 0;\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_effect_\" + effect).className = \"client_button dark\";\r\n\t\tif (selectedEffect) {\r\n\t\t\tdocument.getElementById(\"button_effect_\" + selectedEffect).className = \"client_button\";\r\n\t\t}\r\n\t\tselectedEffect = effect;\r\n\t}\r\n}\r\nwindow.toggleaffect = toggleaffect;\r\n\r\n/**\r\n * Toggle flip for in-character chat.\r\n */\r\nexport function toggleflip() {\r\n\tif (client.flip) {\r\n\t\tdocument.getElementById(\"button_flip\").className = \"client_button\";\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_flip\").className = \"client_button dark\";\r\n\t}\r\n\tclient.flip = !client.flip;\r\n}\r\nwindow.toggleflip = toggleflip;\r\n\r\n/**\r\n * Toggle presentable for presenting evidence in-character chat.\r\n */\r\nexport function togglepresent() {\r\n\tif (client.presentable) {\r\n\t\tdocument.getElementById(\"button_present\").className = \"client_button\";\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_present\").className = \"client_button dark\";\r\n\t}\r\n\tclient.presentable = !client.presentable;\r\n}\r\nwindow.togglepresent = togglepresent;\r\n\r\n/**\r\n * Highlights and selects a menu.\r\n * @param {string} menu the menu to be selected\r\n */\r\nexport function togglemenu(menu) {\r\n\tif (menu != selectedMenu) {\r\n\t\tdocument.getElementById(\"menu_\" + menu).className = \"menu_icon active\";\r\n\t\tdocument.getElementById(\"content_\" + menu).className = \"menu_content active\";\r\n\t\tdocument.getElementById(\"menu_\" + selectedMenu).className = \"menu_icon\";\r\n\t\tdocument.getElementById(\"content_\" + selectedMenu).className = \"menu_content\";\r\n\t\tselectedMenu = menu;\r\n\t}\r\n}\r\nwindow.togglemenu = togglemenu;\r\n\r\n/**\r\n * Highlights and selects a shout for in-character chat.\r\n * If the same shout button is selected, then the shout is canceled.\r\n * @param {string} shout the new shout to be selected\r\n */\r\nexport function toggleshout(shout) {\r\n\tif (shout == selectedShout) {\r\n\t\tdocument.getElementById(\"button_\" + shout).className = \"client_button\";\r\n\t\tselectedShout = 0;\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_\" + shout).className = \"client_button dark\";\r\n\t\tif (selectedShout) {\r\n\t\t\tdocument.getElementById(\"button_\" + selectedShout).className = \"client_button\";\r\n\t\t}\r\n\t\tselectedShout = shout;\r\n\t}\r\n}\r\nwindow.toggleshout = toggleshout;\r\n\r\n/**\r\n * Escapes a string to be HTML-safe.\r\n * \r\n * XXX: This is unnecessary if we use `createTextNode` instead!\r\n * @param {string} unsafe an unsanitized string\r\n */\r\nfunction escapeHtml(unsafe) {\r\n\treturn unsafe\r\n\t\t.replace(/&/g, \"&\")\r\n\t\t.replace(/</g, \"<\")\r\n\t\t.replace(/>/g, \">\")\r\n\t\t.replace(/\"/g, \""\")\r\n\t\t.replace(/'/g, \"'\");\r\n}\r\n\r\n/**\r\n * Escapes a string to AO1 escape codes.\r\n * @param {string} estring the string to be escaped\r\n */\r\nfunction escapeChat(estring) {\r\n\treturn estring\r\n\t\t.replace(/#/g, \"<pound>\")\r\n\t\t.replace(/&/g, \"<and>\")\r\n\t\t.replace(/%/g, \"<percent>\")\r\n\t\t.replace(/\\$/g, \"<dollar>\");\r\n}\r\n\r\n/**\r\n * Unescapes a string to AO1 escape codes.\r\n * @param {string} estring the string to be unescaped\r\n */\r\nfunction unescapeChat(estring) {\r\n\treturn estring\r\n\t\t.replace(/<pound>/g, \"#\")\r\n\t\t.replace(/<and>/g, \"&\")\r\n\t\t.replace(/<percent>/g, \"%\")\r\n\t\t.replace(/<dollar>/g, \"$\");\r\n}\r\n\r\n/**\r\n * Encoding text on client side.\r\n * @param {string} estring the string to be encoded\r\n */\r\nfunction encodeChat(estring) {\r\n\tlet selectedEncoding = document.getElementById(\"client_encoding\").value;\r\n\tif (selectedEncoding == \"unicode\") {\r\n\t\t//Source: https://gist.github.com/mathiasbynens/1243213\r\n\t\treturn estring.replace(/[^\\0-~]/g, function(ch) {\r\n\t\t\treturn \"\\\\u\" + (\"000\" + ch.charCodeAt().toString(16)).slice(-4); });\r\n\t} else if (selectedEncoding == \"utf16\"){\r\n\t\t//Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\r\n\t\tvar buffer = new ArrayBuffer(estring.length*2);\r\n\t\tvar result = new Uint16Array(buffer);\r\n\t\tfor (var i=0, strLen=estring.length; i < strLen; i++) {\r\n\t\t\tresult[i] = estring.charCodeAt(i);\r\n\t\t}\r\n\t\treturn String(result);\r\n\t} else {\r\n\t\treturn estring;\r\n\t}\r\n}\r\n\r\n/**\r\n * Decoding text on client side.\r\n * @param {string} estring the string to be decoded\r\n */\r\nfunction decodeChat(estring) {\r\n\tlet selectedDecoding = document.getElementById(\"client_decoding\").value;\r\n\tif (selectedDecoding == \"unicode\") {\r\n\t\t//Source: https://stackoverflow.com/questions/7885096/how-do-i-decode-a-string-with-escaped-unicode\r\n return estring.replace(/\\\\u([\\d\\w]{1,})/gi, function (match, group) {\r\n\t\t\treturn String.fromCharCode(parseInt(group, 16)); } );\r\n\t} else if (selectedDecoding == \"utf16\"){\t\r\n\t\t//Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\r\n\t\treturn String.fromCharCode.apply(null, new Uint16Array(estring.split(\",\")));\r\n\t} else {\r\n\t\treturn estring;\r\n\t}\r\n}\r\n\r\n/**\r\n * Decoding text on client side.\r\n * @param {string} estring the string to be decoded\r\n */\r\nfunction decodeBBCode(estring) {\r\n\treturn estring\r\n\t\t.replace(/\\\\n/g, \"<br>\") // Newline \\n\r\n\t\t.replace(/\\[(\\/?)b\\]/g, \"<$1b>\") // Bold [b][/b]\r\n\t\t.replace(/\\[(\\/?)i\\]/g, \"<$1i>\") // Italic [i][/i]\r\n\t\t.replace(/\\[(\\/?)del\\]/g, \"<$1del>\") // Deleted [del][/del]\r\n\t\t.replace(/\\[(\\/?)u\\]/g, \"<$1ins>\") // Underline [u][/u]\r\n\t\t.replace(/\\[(\\/?)sub\\]/g, \"<$1sub>\") // Subscript [sub][/sub]\r\n\t\t.replace(/\\[(\\/?)sup\\]/g, \"<$1sup>\") // Superscript [sup][/sup]\r\n\t\t.replace(/\\[m=([#a-zA-Z0-9]+)\\]/g, '<m a=\"$1\">') // Markup [m=#0ff]\r\n\t\t.replace(/\\[(\\/?)m\\]/g, '<$1m>') // [m][/m]\r\n\t\t.replace(/\\[c=?([#a-zA-Z0-9]+)\\]/g, '<c a=\"$1\">') // Color [c=red]\r\n\t\t.replace(/\\[\\/c\\]/g, '</c>'); // [/c]\r\n}\r\n\r\n\r\n// TODO: Possibly safe to remove, since we are using a transpiler.\r\nif (typeof(String.prototype.trim) === \"undefined\")\r\n{\r\n String.prototype.trim = function() \r\n {\r\n return String(this).replace(/^\\s+|\\s+$/g, '');\r\n };\r\n}\r\n\r\n// Used for HDID calculation.\r\nString.prototype.hashCode = function() {\r\n\tvar hash = 0, i, chr;\r\n\tif (this.length === 0) return hash;\r\n\tfor (i = 0; i < this.length; i++) {\r\n\t chr = this.charCodeAt(i);\r\n\t hash = ((hash << 5) - hash) + chr;\r\n\t hash |= 0; // Convert to 32bit integer\r\n\t}\r\n\treturn hash;\r\n};\r\n\r\n\r\n//\r\n// Client code\r\n//\r\n\r\nlet client = new Client(serverIP);\r\nlet viewport = new Viewport();\r\n\r\n$(document).ready(function(){\r\n\tclient.initialObservBBCode();\r\n\tclient.loadResources(); \r\n});\r\n"],"sourceRoot":""}
\ No newline at end of file diff --git a/webAO/client.css b/webAO/client.css index d6360e3..60f6645 100644 --- a/webAO/client.css +++ b/webAO/client.css @@ -334,6 +334,13 @@ img { height: 20px; } +#client_testimony { + display: block; + position: absolute; + width: 100%; + height: auto; +} + #evi_icon { background-image: url('misc/empty.png'); background-repeat: no-repeat; @@ -447,6 +454,10 @@ img { opacity: 0.25; } +.menu_icon:hover{ + color: #FFD081; +} + .material-icons.em-3 { font-size: 3em; } diff --git a/webAO/client.html b/webAO/client.html index ce69621..d2c7b54 100644 --- a/webAO/client.html +++ b/webAO/client.html @@ -10,6 +10,8 @@ <link type="text/css" rel="stylesheet" href="golden/css/goldenlayout.css" /> <link type="text/css" rel="stylesheet" href="https://golden-layout.com/files/latest/css/goldenlayout-dark-theme.css" /> <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> + <script src="lib/jdataview.min.js"></script> + <script src="lib/gify.min.js"></script> <script src="backgrounds.min.js"></script> <script src="evidences.min.js"></script> <script src="ui.b.js"></script> @@ -32,8 +34,18 @@ <div id="client_chat"> <p id="client_inner_chat"></p> </div> + <img id="client_testimony" alt="Testimony overlay" onerror="imgError(this);"> </div> <input id="client_inputbox" class="long" type="text" onkeypress="onEnter(event)" style="padding-left: 1px; padding-right: 1px;"> + <meta name="frame-title" lang="en" content="Miscellaneous"> + <div id="client_bars"> + <span style="background-image: url("misc/zdoh.png"); width: 90px; height: 20px;"> + <img class="client_defense" alt="Defense health" id="client_defense_hp" src="misc/advocat.png" style="clip-path: polygon(0px 0px, 90px 0px, 90px 20px, 0px 20px, 0px 0px); clip: rect(0px, 90px, 20px, 0px);"> + </span> + <span style="background-image: url("misc/zdoh.png"); width: 90px; height: 20px;" misc=""> + <img class="client_prosecutor" alt="Prosecution health" id="client_prosecutor_hp" src="misc/procuror.png" style="clip-path: polygon(0px 0px, 90px 0px, 90px 20px, 0px 20px, 0px 0px); clip: rect(0px, 90px, 20px, 0px);" misc=""> + </span> + </div> <div id="client_emo"> </div> <br> @@ -61,32 +73,14 @@ <img src="misc/flash.png" id="button_effect_1" alt="Flash" class="client_button" onclick="toggleaffect(1)"> <img src="misc/shake.png" id="button_effect_2" alt="Shake" class="client_button" onclick="toggleaffect(2)"> </div> -</template> - -<template id="client_settings"> - <meta name="frame-title" lang="en" content="Settings"> - <br><br> - <label for="client_encoding"> Client Side Chat Encoding:</label> - <select id="client_encoding" name="client_encoding"> - <option value="none">None</option> - <option value="unicode">Unicode</option> - <option value="utf16">UTF-16</option> - </select> - <br><br> - <label for="client_decoding"> Client Side Chat Decoding:</label> - <select id="client_decoding" name="client_decoding"> - <option value="none">None</option> - <option value="unicode">Unicode</option> - <option value="utf16">UTF-16</option> - </select> - <br><br> - <label for="bg_command"> Change background command:</label> - <input id="bg_command" name="bg_command" class="short" type="text" value="bg $1"> - <br><br> - <div class="slider">Music<input id="client_mvolume" class="long" type="range" min="0" max="100" value="80" onchange="changeMusicVolume()"></div> - <div class="slider">SFX <input id="client_svolume" class="long" type="range" min="0" max="100" value="70" onchange="changeSFXVolume()"></div> - <div class="slider">Blip <input id="client_bvolume" class="long" type="range" min="0" max="100" value="60" onchange="changeBlipVolume()"></div> - <input id="change_character" type="button" onclick="changeCharacter()" value="Change character"> + <fieldset style="margin:10px;"> + <legend>Action Commands</legend> + <span> + <span id="menu_wt" onclick="initwt()" class="menu_icon" style="display:none"><i class="material-icons em-3">record_voice_over</i><div>Witness<br>Testimony</div></span> + <span id="menu_ce" onclick="initce()" class="menu_icon" style="display:none"><i class="material-icons em-3">question_answer</i><div>Cross<br>Examination</div></span> + <span id="menu_cm" onclick="callmod()" class="menu_icon"><i class="material-icons em-3">report</i><div>Call Mod</div></span> + </span> + </fieldset> </template> <template id="mainmenu"> @@ -95,9 +89,11 @@ <div class="hrtext">↓ Main Menu ↓</div> <span id="menu_1" onclick="togglemenu(1)" class="menu_icon active"><i class="material-icons em-3">work</i><div>Evidence</div></span> <span id="menu_2" onclick="togglemenu(2)" class="menu_icon"><i class="material-icons em-3">room</i><div>Location</div></span> - <span id="menu_3" onclick="togglemenu(3)" class="menu_icon"><i class="material-icons em-3">gavel</i><div>Action</div></span> + <span id="menu_3" onclick="togglemenu(3)" class="menu_icon"><i class="material-icons em-3">settings</i><div>Settings</div></span> <span id="menu_4" onclick="togglemenu(4)" class="menu_icon"><i class="material-icons em-3">description</i><div>Guide</div></span> + <span id="menu_5" onclick="togglemenu(5)" class="menu_icon"><i class="material-icons em-3">person</i><div>About</div></span> <div class="hrtext">↓ <span id="content_name">Content</span> ↓</div> + <!-------- Evidence section --------> <span class="menu_content active" id="content_1"> <meta name="frame-title" lang="en" content="Evidence"> <fieldset style="text-align: left"> @@ -129,6 +125,8 @@ <br> <img src="misc/present.png" id="button_present" alt="Present" class="client_button" onclick="togglepresent()"> </span> + + <!-------- Location section --------> <span class="menu_content" id="content_2"> <div id="areas"></div><br> <fieldset style="text-align: left"> @@ -146,8 +144,66 @@ <span> </fieldset> </span> - <span class="menu_content" id="content_3"></span> + + <!-------- Settings section --------> + <span class="menu_content" id="content_3"> + <meta name="frame-title" lang="en" content="Settings"> + <label for="role_select" >Role:</label> + <select id="role_select" name="role_select" onchange="changeRoleOOC()"> + <option value="def">Defense</option> + <option value="pro">Prosecution</option> + <option value="jud">Judge</option> + <option value="wit">Witness</option> + <option value="hld">Helper Defense</option> + <option value="hlp">Helper Prosecution</option> + </select> + <br><br> + <label for="client_encoding"> Client Side Chat Encoding:</label> + <select id="client_encoding" name="client_encoding"> + <option value="none">None</option> + <option value="unicode">Unicode</option> + <option value="utf16">UTF-16</option> + </select> + <br><br> + <label for="client_decoding"> Client Side Chat Decoding:</label> + <select id="client_decoding" name="client_decoding"> + <option value="none">None</option> + <option value="unicode">Unicode</option> + <option value="utf16">UTF-16</option> + </select> + <br><br> + <span style="color:red">* If you not sure what does this means, please don't change the settings.</span> + <br> + <label for="bg_command">Change background command:</label> + <input id="bg_command" name="bg_command" class="short" type="text" value="bg $1"> + <br> + <label for="role_command">Change role command:</label> + <input id="role_command" name="role_command" class="short" type="text" value="pos $1"> + <br> + <label for="randomchar_command">Random character command:</label> + <input id="randomchar_command" name="randomchar_command" class="short" type="text" value="randomchar"> + <br><br> + <div class="slider">Music<input id="client_mvolume" class="long" type="range" min="0" max="100" value="80" onchange="changeMusicVolume()"></div> + <div class="slider">SFX <input id="client_svolume" class="long" type="range" min="0" max="100" value="70" onchange="changeSFXVolume()"></div> + <div class="slider">Blip <input id="client_bvolume" class="long" type="range" min="0" max="100" value="60" onchange="changeBlipVolume()"></div> + <br> + <img src="misc/character_change.png" id="char_change" alt="Change" class="client_button hover_button" onclick="changeCharacter()"> + <img src="misc/character_random.png" id="char_change" alt="Change" class="client_button hover_button" onclick="randomCharacterOOC()"> + </span> + + <!-------- Guide section --------> <span class="menu_content" id="content_4"></span> + + <!-------- About section --------> + <span class="menu_content" id="content_5"> + <meta name="frame-title" lang="en" content="About"> + <img id="about-logo" src="images/logo-new.png" alt="Attorney Online logo"> + <h1 style="line-height: .3em;">webAO</h1> + <h3>version 2.1.3</h3> + <p>Client created by <a href="https://github.com/stonedDiscord">@stonedDiscord</a> and fixed up by <a href="https://github.com/oldmud0">@oldmud0</a>.</p> + <p>Modified by <a href="https://github.com/qubrick">Qubrick</a></p> + <p>Special thanks to Aleks for reverse engineering the original Delphi client written by FanatSors.</p> + </span> </div> </template> @@ -158,18 +214,6 @@ </div> </template> -<template id="misc" style="display: flex; flex-direction: column;"> - <meta name="frame-title" lang="en" content="Miscellaneous"> - <div id="client_bars"> - <span style="background-image: url("misc/zdoh.png"); width: 90px; height: 20px;"> - <img class="client_defense" alt="Defense health" id="client_defense_hp" src="misc/advocat.png" style="clip-path: polygon(0px 0px, 90px 0px, 90px 20px, 0px 20px, 0px 0px); clip: rect(0px, 90px, 20px, 0px);"> - </span> - <span style="background-image: url("misc/zdoh.png"); width: 90px; height: 20px;" misc=""> - <img class="client_prosecutor" alt="Prosecution health" id="client_prosecutor_hp" src="misc/procuror.png" style="clip-path: polygon(0px 0px, 90px 0px, 90px 20px, 0px 20px, 0px 0px); clip: rect(0px, 90px, 20px, 0px);" misc=""> - </span> - </div> -</template> - <template id="ooc"> <meta name="frame-title" lang="en" content="Server"> <div style="height: 100%; display: flex; flex-direction: column;"> @@ -184,15 +228,6 @@ </select> </template> -<template id="about"> - <meta name="frame-title" lang="en" content="About"> - <img id="about-logo" src="images/logo-new.png" alt="Attorney Online logo"> - <h1 style="line-height: .3em;">webAO</h1> - <h3>version 2.1.1</h3> - <p>Client created by <a href="https://github.com/stonedDiscord">@stonedDiscord</a> and fixed up by <a href="https://github.com/oldmud0">@oldmud0</a>.</p> - <p>Special thanks to Aleks for reverse engineering the original Delphi client written by FanatSors.</p> -</template> - <body> <span id="sound"></span> <div id="here"></div> diff --git a/webAO/client.js b/webAO/client.js index a9e95b5..68d7c7d 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -19,7 +19,7 @@ const MUSIC_HOST = AO_HOST + "sounds/music/"; const BAR_WIDTH = 90; const BAR_HEIGHT = 20; const CHAR_SELECT_WIDTH = 8; -const UPDATE_INTERVAL = 65; +const UPDATE_INTERVAL = 60; let oldLoading = false; if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) { @@ -45,10 +45,36 @@ class Client { this.playerID = 1; this.charID = -1; + this.testimonyID = 0; this.chars = []; this.emotes = []; this.evidences = []; + + this.resources = { + "holdit":{ + "src": "misc/holdit.gif", + "duration": 720 + }, + "objection":{ + "src": "misc/objection.gif", + "duration": 720 + }, + "takethat":{ + "src": "misc/takethat.gif", + "duration": 840 + }, + "witnesstestimony":{ + "src": "misc/witnesstestimony.gif", + "duration": 1560, + "sfx": "sounds/general/sfx-testimony.wav" + }, + "crossexamination":{ + "src": "misc/crossexamination.gif", + "duration": 1600, + "sfx": "sounds/general/sfx-testimony2.wav" + } + }; this.selectedEmote = -1; this.selectedEvidence = 0; @@ -71,9 +97,11 @@ class Client { "SM": (args) => this.handleSM(args), "music": (args) => this.handlemusic(args), "DONE": (args) => this.handleDONE(args), - "BN": (args) => this.handleBN(args), + "BN": (args) => this.handleBN(args), "NBG": (args) => this.handleNBG(args), "HP": (args) => this.handleHP(args), + "RT": (args) => this.handleRT(args), + "ZZ": (args) => this.handleZZ(args), "ID": (args) => this.handleID(args), "PN": (args) => this.handlePN(args), "SI": (args) => this.handleSI(args), @@ -159,9 +187,27 @@ class Client { * Sends delete evidence command. * @param {string} evidence id */ - sendDE(id, name, desc, img) { + sendDE(id) { this.serv.send(`DE#${id}#%`); } + + /** + * Sends call mod command. + * @param {string} message to mod + */ + sendZZ(msg) { + this.serv.send(`ZZ#${msg}#%`); + } + + /** + * Sends testimony command. + * @param {string} testimony type + */ + sendRT(testimony) { + if(this.chars[this.charID].side == "jud"){ + this.serv.send(`RT#${testimony}#%`); + } + } /** * Requests to change the music to the specified track. @@ -207,11 +253,61 @@ class Client { for(let i = 1; i <= background_arr.length; i++) { background_select.add(new Option(background_arr[i - 1])); } + // Calculate gif duration of shouts + let shouts = ["holdit", "objection", "takethat"]; + for (let i = 0; i < shouts.length; i++) { + let shout_src = AO_HOST + this.resources[shouts[i]]["src"]; + FileExist(shout_src, this.callbackLoadImageResources, shouts[i]); + } + + // Calculate gif duration of testimony + let testimony = ["witnesstestimony", "crossexamination"]; + for (let i = 0; i < testimony.length; i++) { + let testimony_src = AO_HOST + "themes/default/"+ testimony[i] +".gif"; + // Check iamge existed + FileExist(testimony_src, this.callbackLoadImageResources, testimony[i]); + // Check sfx existed + FileExist(AO_HOST + this.resources[testimony[i]]["sfx"], this.callbackLoadSFXResources, testimony[i]); + } // TODO: Cache some resources } /** + * Callback for image resources. + * @param {boolean} result the image is existed or not + * @param {string} resource the resource name + * @param {string} src the url of resource + */ + callbackLoadImageResources(result, resource, src) { + if(result){ + client.resources[resource]["src"] = src; + viewport.getAnimLength(src,client.callbackGetResourceLength, resource); + } + } + + /** + * Callback for animation duration resource + * @param {integer} length the animation length + * @param {string} resource the resource name + */ + callbackGetResourceLength(length, resource) { + client.resources[resource]["duration"] = length; + } + + /** + * Callback for sfx resources. + * @param {boolean} result the audio is existed or not + * @param {string} resource the resource name + * @param {string} src the url of resource + */ + callbackLoadSFXResources(result, resource, src) { + if(result){ + client.resources[resource]["sfx"] = src; + } + } + + /** * Create observer to detect BBCode elements * then manipulate them. */ @@ -594,7 +690,12 @@ class Client { document.getElementById("bg_filename").value = args[1]; } document.getElementById("bg_preview").src = AO_HOST + 'background/' + escape(args[1]) + "/defenseempty.png"; - + if(this.charID == -1){ + changeBackground("jud"); + } else { + changeBackground(this.chars[this.charID].side); + } + } handleNBG(args) { @@ -616,6 +717,47 @@ class Client { } /** + * Handles a testimony states. + * @param {Array} args packet arguments + */ + handleRT(args) { + if (args[1] == "testimony1") { + //Witness Testimony + this.testimonyID = 1; + } else { + //Cross Examination + this.testimonyID = 2; + } + viewport.initTestimonyUpdater(); + } + + /** + * Handles a call mod message. + * @param {Array} args packet arguments + */ + handleZZ(args) { + const oocLog = document.getElementById("client_ooclog"); + oocLog.innerHTML += `\$Alert: ${decodeChat(unescapeChat(args[1]))}\r\n`; + if (oocLog.scrollTop > oocLog.scrollHeight - 60) { + oocLog.scrollTop = oocLog.scrollHeight; + } + } + + /** + * Handles a change in the health bars' states. + * @param {Array} args packet arguments + */ + handleHP(args) { + // TODO (set by sD) + // Also, this is broken. + if (args[1] == 1) { + document.getElementById("client_defense_hp").style.clip = "rect(0px," + BAR_WIDTH * args[2] / 10 + "px," + BAR_HEIGHT + "px,0px)"; + } else { + document.getElementById("client_prosecutor_hp").style.clip = "rect(0px," + BAR_WIDTH * args[2] / 10 + "px," + BAR_HEIGHT + "px,0px)"; + } + } + + /** * Handles the issuance of a player ID by the server. * @param {Array} args packet arguments */ @@ -665,8 +807,8 @@ class Client { if (i % CHAR_SELECT_WIDTH == 0) { document.getElementById("client_chartable").appendChild(tr); } - } - changeBackground("def"); + } + //changeBackground("def"); } /** @@ -679,6 +821,7 @@ class Client { let me = this.me(); let emotes = this.emotes; let xhr = new XMLHttpRequest(); + document.getElementById("client_emo").innerHTML = ""; // Clear emote box xhr.open('GET', AO_HOST + 'characters/' + escape(this.me().name) + '/char.ini', true); xhr.responseType = 'text'; xhr.onload = function (e) { @@ -686,6 +829,7 @@ class Client { let linifile = this.responseText; let pinifile = INI.parse(linifile); me.side = pinifile.Options.side; + updateActionCommands(me.side); for (let i = 1; i < pinifile.Emotions.number; i++) { let emoteinfo = pinifile.Emotions[i].split('#'); let esfx = "0"; @@ -750,9 +894,11 @@ class Viewport { this.music.play(); this.updater = null; + this.testimonyUpdater = null; this.bgname = "gs4"; - + + this.testimonyTimer = 0; this.shoutTimer = 0; this.textTimer = 0; @@ -802,7 +948,7 @@ class Viewport { chatmsg.preanimdelay = this.getAnimLength(AO_HOST + 'characters/' + escape(chatmsg.name) + '/' + chatmsg.preanim + '.gif',this.initUpdater); } else { this.initUpdater(0) - } + } } /** @@ -815,44 +961,82 @@ class Viewport { } /** + * Intialize testimony updater + */ + initTestimonyUpdater(){ + if(client.testimonyID > 0){ + let testimony = ""; + if (client.testimonyID == 1) { + testimony = "witnesstestimony"; + } else if (client.testimonyID == 2) { + testimony = "crossexamination"; + } + (new Audio(client.resources[testimony]["sfx"])).play(); + this.testimonyTimer = 0; + document.getElementById("client_testimony").src = client.resources[testimony]["src"]; + this.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL); + } + } + + /** * Gets animation length. * @param {string} filename the animation file name * @param {function} callback the callback function + * @param {object} param */ - getAnimLength(filename,callback) { - //Source (Thanks to Ryman): https://codepen.io/Ryman/pen/wzioA + getAnimLength(filename, callback, param) { var request = new XMLHttpRequest(); request.open('GET', filename, true); request.responseType = 'arraybuffer'; request.addEventListener('load', function () { - var arr = new Uint8Array(request.response), - // Thanks to http://justinsomnia.org/2006/10/gif-animation-duration-calculation/ - // And http://www.w3.org/Graphics/GIF/spec-gif89a.txt - bin = '', - duration = 0; - - for (var i = 0; i < arr.length; i++) { - bin += String.fromCharCode( arr[i] ) - - // Find a Graphic Control Extension hex(21F904__ ____ __00) - if (arr[i] == 0x21 - && arr[i + 1] == 0xF9 - && arr[i + 2] == 0x04 - && arr[i + 7] == 0x00) { - // Swap 5th and 6th bytes to get the delay per frame - let delay = (arr[i + 5] << 8) | (arr[i + 4] & 0xFF) - - // Should be aware browsers have a minimum frame delay - // e.g. 6ms for IE, 2ms modern browsers (50fps) - duration += delay < 2 ? 10 : (delay) - } - } + // Use gify API + // https://github.com/rfrench/gify + var gifInfo = gify.getInfo(request.response); + console.log(gifInfo["duration"]); // Return animation length - callback(duration * 10); + callback(gifInfo["duration"], param); }); request.send(); } - + + /** + * Updates the testimony overaly + */ + updateTestimony(){ + //Update timer + this.testimonyTimer = this.testimonyTimer + UPDATE_INTERVAL; + + if (client.testimonyID == 1) { + //Witness Testimony + if (this.testimonyTimer >= client.resources["witnesstestimony"]["duration"]){ + //Finish + this.disposeTestimony(); + } else { + this.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL); + } + } else if (client.testimonyID == 2) { + //Cross Examination + if (this.testimonyTimer >= client.resources["crossexamination"]["duration"]){ + //Finish + this.disposeTestimony(); + } else { + this.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL); + } + } else { + this.disposeTestimony(); + } + } + + /** + * Dispose the testimony overlay + */ + disposeTestimony(){ + client.testimonyID = 0; + this.testimonyTimer = 0; + document.getElementById("client_testimony").src = "misc/placeholder.gif"; + clearTimeout(this.testimonyUpdater); + } + /** * Updates the chatbox based on the given text. * @@ -886,7 +1070,7 @@ class Viewport { let shout = shouts[this.chatmsg.objection]; if (typeof shout !== "undefined") { - document.getElementById("client_shout").src = AO_HOST + "misc/" + shout + ".gif"; + document.getElementById("client_shout").src = client.resources[shout]["src"]; (new Audio(`${AO_HOST}/characters/${this.chatmsg.name}/${shout}.wav`)).play(); this.shoutTimer = 850; } else { @@ -1169,13 +1353,22 @@ export function demoError(image) { window.demoError = demoError; /** - * Checks if an image exists at the specified URI. + * Checks if an file exists at the specified URI. * @param {string} url the URI to be checked + * @param {function} callback the function to be called when finished + * @param {object} param */ -function ImageExist(url) { - var img = new Image(); - img.src = url; - return img.height != 0; +function FileExist(url,callback,param) { + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + callback(true, param, url); + } else { + callback(false, param, url); + } + }; + xhttp.open("GET", url, true); + xhttp.send(); } /** @@ -1193,21 +1386,13 @@ function changeBackground(position) { case "def": document.getElementById("client_court").src = bgfolder + "defenseempty.png" document.getElementById("client_bench").style.display = "block"; - if(ImageExist(bgfolder + "defensedesk.png")){ - document.getElementById("client_bench").src = bgfolder + "defensedesk.png" - }else{ - document.getElementById("client_bench").src = bgfolder + "bancodefensa.png" - } + FileExist(bgfolder + "defensedesk.png", callbackChangeBackground, position); standname = "defense"; break; case "pro": document.getElementById("client_court").src = bgfolder + "prosecutorempty.png" document.getElementById("client_bench").style.display = "block" - if(ImageExist(bgfolder + "defensedesk.png")){ - document.getElementById("client_bench").src = bgfolder + "prosecutiondesk.png" - } else { - document.getElementById("client_bench").src = bgfolder + "bancoacusacion.png" - } + FileExist(bgfolder + "defensedesk.png", callbackChangeBackground, position); standname = "prosecution"; break; case "hld": @@ -1236,6 +1421,30 @@ function changeBackground(position) { } /** + * Callback for desk resource + * + * Valid positions: `def, pro, hld, hlp, wit, jud` + * @param {boolean} result the image is existed or not + * @param {string} position the position to change into + */ +function callbackChangeBackground(result,position) { + let bgfolder = viewport.bgFolder(); + if (position == "def"){ + if(result){ + document.getElementById("client_bench").src = bgfolder + "defensedesk.png" + }else{ + document.getElementById("client_bench").src = bgfolder + "bancodefensa.png" + } + } else { + if(result){ + document.getElementById("client_bench").src = bgfolder + "prosecutiondesk.png" + } else { + document.getElementById("client_bench").src = bgfolder + "bancoacusacion.png" + } + } +} + +/** * Triggered when the reconnect button is pushed. */ export function ReconnectButton() { @@ -1459,7 +1668,28 @@ export function updateEvidenceIcon() { window.updateEvidenceIcon = updateEvidenceIcon; /** - * Change background. + * Update evidence icon. + */ +export function updateActionCommands(side) { + if(side == "jud"){ + document.getElementById("menu_wt").style.display = "inline-table"; + document.getElementById("menu_ce").style.display = "inline-table"; + } else { + document.getElementById("menu_wt").style.display = "none"; + document.getElementById("menu_ce").style.display = "none"; + } + //Update role selector + for(let i = 0, role_select = document.getElementById("role_select").options; i < role_select.length; i++){ + if(side == role_select[i].value){ + role_select.selectedIndex = i; + return; + } + } +} +window.updateActionCommands = updateActionCommands; + +/** + * Change background via OOC. */ export function changeBackgroundOOC() { let filename = "", background_select = document.getElementById("bg_select") @@ -1474,6 +1704,50 @@ export function changeBackgroundOOC() { window.changeBackgroundOOC = changeBackgroundOOC; /** + * Change role via OOC. + */ +export function changeRoleOOC() { + let role_select = document.getElementById("role_select") + , role_command = document.getElementById("role_command").value; + + client.sendOOC("/" + role_command.replace("$1",role_select.value)); + updateActionCommands(role_select.value); +} +window.changeRoleOOC = changeRoleOOC; + +/** + * Random character via OOC. + */ +export function randomCharacterOOC() { + client.sendOOC("/" + document.getElementById("randomchar_command").value); +} +window.randomCharacterOOC = randomCharacterOOC; + +/** + * Call mod. + */ +export function callmod() { + client.sendZZ(""); +} +window.callmod = callmod; + +/** + * Decalre witness testimony. + */ +export function initwt() { + client.sendRT("testimony1"); +} +window.initwt = initwt; + +/** + * Decalre cross examination. + */ +export function initce() { + client.sendRT("testimony2"); +} +window.initce = initce; + +/** * Update background preview. */ export function updateBackgroundPreview() { diff --git a/webAO/lib/gify.min.js b/webAO/lib/gify.min.js new file mode 100644 index 0000000..8656d4a --- /dev/null +++ b/webAO/lib/gify.min.js @@ -0,0 +1 @@ +var gify=function(){"use strict";function t(t){return 3*Math.pow(2,1+a(t.slice(5,8)))}function e(t){for(var e=[],i=7;i>=0;i--)e.push(t&1<<i?1:0);return e}function i(t){return t/100*1e3}function a(t){return t.reduce(function(t,e){return 2*t+e},0)}function r(t,e,i){for(var a={data:"",size:0};;){var r=t.getUint8(e+a.size,!0);if(0===r){a.size++;break}i&&(a.data+=t.getString(r,e+a.size+1)),a.size+=r+1}return a}function n(){return{identifier:"0",localPalette:!1,localPaletteSize:0,interlace:!1,comments:[],text:"",left:0,top:0,width:0,height:0,delay:0,disposal:0}}function o(a,o){var u=0,g=0,s={valid:!1,globalPalette:!1,globalPaletteSize:0,globalPaletteColorsRGB:[],loopCount:0,height:0,width:0,animated:!1,images:[],isBrowserDuration:!1,duration:0,durationIE:0,durationSafari:0,durationFirefox:0,durationChrome:0,durationOpera:0},d=new jDataView(a);if(a.byteLength<10)return s;if(18249!=d.getUint16(0)||17976!=d.getUint16(2))return s;s.width=d.getUint16(6,!0),s.height=d.getUint16(8,!0),s.valid=!0;var f=e(d.getUint8(10,!0));if(f[0]){var c=t(f);s.globalPalette=!0,s.globalPaletteSize=c/3,u+=c;for(var h=0;h<s.globalPaletteSize;h++){var v=13+3*h,U=d.getUint8(v,!0),b=d.getUint8(v+1,!0),m=d.getUint8(v+2,!0);s.globalPaletteColorsRGB.push({r:U,g:b,b:m})}}u+=13;for(var p=n();;){try{var w=d.getUint8(u,!0);switch(w){case 33:var z=d.getUint8(u+1,!0);if(249===z){var P=d.getUint8(u+2);if(4===P){var S=i(d.getUint16(u+4,!0));60>S&&!s.isBrowserDuration&&(s.isBrowserDuration=!0),p.delay=S,s.duration+=S,s.durationIE+=60>S?l:S,s.durationSafari+=20>S?l:S,s.durationChrome+=20>S?l:S,s.durationFirefox+=20>S?l:S,s.durationOpera+=20>S?l:S;var f=e(d.getUint8(u+3)),C=f.slice(3,6).join("");p.disposal=parseInt(C,2),u+=8}else u++}else{u+=2;var k=r(d,u,!0);switch(z){case 255:var y=d.getString(8,u+1);"NETSCAPE"===y&&(s.loopCount=d.getUint8(u+14,!0));break;case 206:p.identifier=k.data;break;case 254:p.comments.push(k.data);break;case 1:p.text=k.data}u+=k.size}break;case 44:p.left=d.getUint16(u+1,!0),p.top=d.getUint16(u+3,!0),p.width=d.getUint16(u+5,!0),p.height=d.getUint16(u+7,!0);var f=e(d.getUint8(u+9,!0));if(f[0]){var B=t(f);p.localPalette=!0,p.localPaletteSize=B/3,u+=B}if(f[1]&&(p.interlace=!0),s.images.push(p),g++,p=n(),p.identifier=g.toString(),s.images.length>1&&!s.animated&&(s.animated=!0,o))return s;u+=11;var k=r(d,u,!1);u+=k.size;break;case 59:return s;default:u++}}catch(x){return s.valid=!1,s}if(u>=a.byteLength)return s}return s}var l=100;return{isAnimated:function(t){var e=o(t,!0);return e.animated},getInfo:function(t){return o(t,!1)}}}();
\ No newline at end of file diff --git a/webAO/lib/jdataview.min.js b/webAO/lib/jdataview.min.js new file mode 100644 index 0000000..38e31b9 --- /dev/null +++ b/webAO/lib/jdataview.min.js @@ -0,0 +1,50 @@ +(function(global){var compatibility={ArrayBuffer:typeof ArrayBuffer!=='undefined',DataView:typeof DataView!=='undefined'&&('getFloat64'in DataView.prototype||'getFloat64'in new DataView(new ArrayBuffer(1))),NodeBuffer:typeof Buffer!=='undefined'&&'readInt16LE'in Buffer.prototype};var dataTypes={'Int8':1,'Int16':2,'Int32':4,'Uint8':1,'Uint16':2,'Uint32':4,'Float32':4,'Float64':8};var nodeNaming={'Int8':'Int8','Int16':'Int16','Int32':'Int32','Uint8':'UInt8','Uint16':'UInt16','Uint32':'UInt32','Float32':'Float','Float64':'Double'};var jDataView=function(buffer,byteOffset,byteLength,littleEndian){if(!(this instanceof jDataView)){throw new Error("jDataView constructor may not be called as a function");} +this.buffer=buffer;if(!(compatibility.NodeBuffer&&buffer instanceof Buffer)&&!(compatibility.ArrayBuffer&&buffer instanceof ArrayBuffer)&&typeof buffer!=='string'){throw new TypeError('jDataView buffer has an incompatible type');} +this._isArrayBuffer=compatibility.ArrayBuffer&&buffer instanceof ArrayBuffer;this._isDataView=compatibility.DataView&&this._isArrayBuffer;this._isNodeBuffer=compatibility.NodeBuffer&&buffer instanceof Buffer;this._littleEndian=littleEndian===undefined?false:littleEndian;var bufferLength=this._isArrayBuffer?buffer.byteLength:buffer.length;if(byteOffset===undefined){byteOffset=0;} +this.byteOffset=byteOffset;if(byteLength===undefined){byteLength=bufferLength-byteOffset;} +this.byteLength=byteLength;if(!this._isDataView){if(typeof byteOffset!=='number'){throw new TypeError('jDataView byteOffset is not a number');} +if(typeof byteLength!=='number'){throw new TypeError('jDataView byteLength is not a number');} +if(byteOffset<0){throw new Error('jDataView byteOffset is negative');} +if(byteLength<0){throw new Error('jDataView byteLength is negative');}} +if(this._isDataView){this._view=new DataView(buffer,byteOffset,byteLength);this._start=0;} +this._start=byteOffset;if(byteOffset+byteLength>bufferLength){throw new Error("jDataView (byteOffset + byteLength) value is out of bounds");} +this._offset=0;if(this._isDataView){for(var type in dataTypes){if(!dataTypes.hasOwnProperty(type)){continue;} +(function(type,view){var size=dataTypes[type];view['get'+type]=function(byteOffset,littleEndian){if(littleEndian===undefined){littleEndian=view._littleEndian;} +if(byteOffset===undefined){byteOffset=view._offset;} +view._offset=byteOffset+size;return view._view['get'+type](byteOffset,littleEndian);}})(type,this);}}else if(this._isNodeBuffer&&compatibility.NodeBuffer){for(var type in dataTypes){if(!dataTypes.hasOwnProperty(type)){continue;} +var name;if(type==='Int8'||type==='Uint8'){name='read'+nodeNaming[type];}else if(littleEndian){name='read'+nodeNaming[type]+'LE';}else{name='read'+nodeNaming[type]+'BE';} +(function(type,view,name){var size=dataTypes[type];view['get'+type]=function(byteOffset,littleEndian){if(littleEndian===undefined){littleEndian=view._littleEndian;} +if(byteOffset===undefined){byteOffset=view._offset;} +view._offset=byteOffset+size;return view.buffer[name](view._start+byteOffset);}})(type,this,name);}}else{for(var type in dataTypes){if(!dataTypes.hasOwnProperty(type)){continue;} +(function(type,view){var size=dataTypes[type];view['get'+type]=function(byteOffset,littleEndian){if(littleEndian===undefined){littleEndian=view._littleEndian;} +if(byteOffset===undefined){byteOffset=view._offset;} +view._offset=byteOffset+size;if(view._isArrayBuffer&&(view._start+byteOffset)%size===0&&(size===1||littleEndian)){return new global[type+'Array'](view.buffer,view._start+byteOffset,1)[0];}else{if(typeof byteOffset!=='number'){throw new TypeError('jDataView byteOffset is not a number');} +if(byteOffset+size>view.byteLength){throw new Error('jDataView (byteOffset + size) value is out of bounds');} +return view['_get'+type](view._start+byteOffset,littleEndian);}}})(type,this);}}};if(compatibility.NodeBuffer){jDataView.createBuffer=function(){var buffer=new Buffer(arguments.length);for(var i=0;i<arguments.length;++i){buffer[i]=arguments[i];} +return buffer;}}else if(compatibility.ArrayBuffer){jDataView.createBuffer=function(){var buffer=new ArrayBuffer(arguments.length);var view=new Int8Array(buffer);for(var i=0;i<arguments.length;++i){view[i]=arguments[i];} +return buffer;}}else{jDataView.createBuffer=function(){return String.fromCharCode.apply(null,arguments);}} +jDataView.prototype={compatibility:compatibility,getString:function(length,byteOffset){var value;if(byteOffset===undefined){byteOffset=this._offset;} +if(typeof byteOffset!=='number'){throw new TypeError('jDataView byteOffset is not a number');} +if(length<0||byteOffset+length>this.byteLength){throw new Error('jDataView length or (byteOffset+length) value is out of bounds');} +if(this._isNodeBuffer){value=this.buffer.toString('ascii',this._start+byteOffset,this._start+byteOffset+length);} +else{value='';for(var i=0;i<length;++i){var char=this.getUint8(byteOffset+i);value+=String.fromCharCode(char>127?65533:char);}} +this._offset=byteOffset+length;return value;},getChar:function(byteOffset){return this.getString(1,byteOffset);},tell:function(){return this._offset;},seek:function(byteOffset){if(typeof byteOffset!=='number'){throw new TypeError('jDataView byteOffset is not a number');} +if(byteOffset<0||byteOffset>this.byteLength){throw new Error('jDataView byteOffset value is out of bounds');} +return this._offset=byteOffset;},_endianness:function(byteOffset,pos,max,littleEndian){return byteOffset+(littleEndian?max-pos-1:pos);},_getFloat64:function(byteOffset,littleEndian){var b0=this._getUint8(this._endianness(byteOffset,0,8,littleEndian)),b1=this._getUint8(this._endianness(byteOffset,1,8,littleEndian)),b2=this._getUint8(this._endianness(byteOffset,2,8,littleEndian)),b3=this._getUint8(this._endianness(byteOffset,3,8,littleEndian)),b4=this._getUint8(this._endianness(byteOffset,4,8,littleEndian)),b5=this._getUint8(this._endianness(byteOffset,5,8,littleEndian)),b6=this._getUint8(this._endianness(byteOffset,6,8,littleEndian)),b7=this._getUint8(this._endianness(byteOffset,7,8,littleEndian)),sign=1-(2*(b0>>7)),exponent=((((b0<<1)&0xff)<<3)|(b1>>4))-(Math.pow(2,10)-1),mantissa=((b1&0x0f)*Math.pow(2,48))+(b2*Math.pow(2,40))+(b3*Math.pow(2,32))+ +(b4*Math.pow(2,24))+(b5*Math.pow(2,16))+(b6*Math.pow(2,8))+b7;if(exponent===1024){if(mantissa!==0){return NaN;}else{return sign*Infinity;}} +if(exponent===-1023){return sign*mantissa*Math.pow(2,-1022-52);} +return sign*(1+mantissa*Math.pow(2,-52))*Math.pow(2,exponent);},_getFloat32:function(byteOffset,littleEndian){var b0=this._getUint8(this._endianness(byteOffset,0,4,littleEndian)),b1=this._getUint8(this._endianness(byteOffset,1,4,littleEndian)),b2=this._getUint8(this._endianness(byteOffset,2,4,littleEndian)),b3=this._getUint8(this._endianness(byteOffset,3,4,littleEndian)),sign=1-(2*(b0>>7)),exponent=(((b0<<1)&0xff)|(b1>>7))-127,mantissa=((b1&0x7f)<<16)|(b2<<8)|b3;if(exponent===128){if(mantissa!==0){return NaN;}else{return sign*Infinity;}} +if(exponent===-127){return sign*mantissa*Math.pow(2,-126-23);} +return sign*(1+mantissa*Math.pow(2,-23))*Math.pow(2,exponent);},_getInt32:function(byteOffset,littleEndian){var b=this._getUint32(byteOffset,littleEndian);return b>Math.pow(2,31)-1?b-Math.pow(2,32):b;},_getUint32:function(byteOffset,littleEndian){var b3=this._getUint8(this._endianness(byteOffset,0,4,littleEndian)),b2=this._getUint8(this._endianness(byteOffset,1,4,littleEndian)),b1=this._getUint8(this._endianness(byteOffset,2,4,littleEndian)),b0=this._getUint8(this._endianness(byteOffset,3,4,littleEndian));return(b3*Math.pow(2,24))+(b2<<16)+(b1<<8)+b0;},_getInt16:function(byteOffset,littleEndian){var b=this._getUint16(byteOffset,littleEndian);return b>Math.pow(2,15)-1?b-Math.pow(2,16):b;},_getUint16:function(byteOffset,littleEndian){var b1=this._getUint8(this._endianness(byteOffset,0,2,littleEndian)),b0=this._getUint8(this._endianness(byteOffset,1,2,littleEndian));return(b1<<8)+b0;},_getInt8:function(byteOffset){var b=this._getUint8(byteOffset);return b>Math.pow(2,7)-1?b-Math.pow(2,8):b;},_getUint8:function(byteOffset){if(this._isArrayBuffer){return new Uint8Array(this.buffer,byteOffset,1)[0];} +else if(this._isNodeBuffer){return this.buffer[byteOffset];}else{return this.buffer.charCodeAt(byteOffset)&0xff;}}};if(typeof jQuery!=='undefined'&&jQuery.fn.jquery>="1.6.2"){var convertResponseBodyToText=function(byteArray){var scrambledStr;try{scrambledStr=IEBinaryToArray_ByteStr(byteArray);}catch(e){var IEBinaryToArray_ByteStr_Script="Function IEBinaryToArray_ByteStr(Binary)\r\n"+" IEBinaryToArray_ByteStr = CStr(Binary)\r\n"+"End Function\r\n"+"Function IEBinaryToArray_ByteStr_Last(Binary)\r\n"+" Dim lastIndex\r\n"+" lastIndex = LenB(Binary)\r\n"+" if lastIndex mod 2 Then\r\n"+" IEBinaryToArray_ByteStr_Last = AscB( MidB( Binary, lastIndex, 1 ) )\r\n"+" Else\r\n"+" IEBinaryToArray_ByteStr_Last = -1\r\n"+" End If\r\n"+"End Function\r\n";window.execScript(IEBinaryToArray_ByteStr_Script,'vbscript');scrambledStr=IEBinaryToArray_ByteStr(byteArray);} +var lastChr=IEBinaryToArray_ByteStr_Last(byteArray),result="",i=0,l=scrambledStr.length%8,thischar;while(i<l){thischar=scrambledStr.charCodeAt(i++);result+=String.fromCharCode(thischar&0xff,thischar>>8);} +l=scrambledStr.length +while(i<l){result+=String.fromCharCode((thischar=scrambledStr.charCodeAt(i++),thischar&0xff),thischar>>8,(thischar=scrambledStr.charCodeAt(i++),thischar&0xff),thischar>>8,(thischar=scrambledStr.charCodeAt(i++),thischar&0xff),thischar>>8,(thischar=scrambledStr.charCodeAt(i++),thischar&0xff),thischar>>8,(thischar=scrambledStr.charCodeAt(i++),thischar&0xff),thischar>>8,(thischar=scrambledStr.charCodeAt(i++),thischar&0xff),thischar>>8,(thischar=scrambledStr.charCodeAt(i++),thischar&0xff),thischar>>8,(thischar=scrambledStr.charCodeAt(i++),thischar&0xff),thischar>>8);} +if(lastChr>-1){result+=String.fromCharCode(lastChr);} +return result;};jQuery.ajaxSetup({converters:{'* dataview':function(data){return new jDataView(data);}},accepts:{dataview:"text/plain; charset=x-user-defined"},responseHandler:{dataview:function(responses,options,xhr){if('mozResponseArrayBuffer'in xhr){responses.text=xhr.mozResponseArrayBuffer;} +else if('responseType'in xhr&&xhr.responseType==='arraybuffer'&&xhr.response){responses.text=xhr.response;} +else if('responseBody'in xhr){responses.text=convertResponseBodyToText(xhr.responseBody);} +else{responses.text=xhr.responseText;}}}});jQuery.ajaxPrefilter('dataview',function(options,originalOptions,jqXHR){if(jQuery.support.ajaxResponseType){if(!options.hasOwnProperty('xhrFields')){options.xhrFields={};} +options.xhrFields.responseType='arraybuffer';} +options.mimeType='text/plain; charset=x-user-defined';});} +global.jDataView=(global.module||{}).exports=jDataView;if(typeof module!=='undefined'){module.exports=jDataView;}})(this);
\ No newline at end of file diff --git a/webAO/misc/character_change.png b/webAO/misc/character_change.png Binary files differnew file mode 100644 index 0000000..ef210c8 --- /dev/null +++ b/webAO/misc/character_change.png diff --git a/webAO/misc/character_random.png b/webAO/misc/character_random.png Binary files differnew file mode 100644 index 0000000..e90267e --- /dev/null +++ b/webAO/misc/character_random.png diff --git a/webAO/misc/crossexamination.gif b/webAO/misc/crossexamination.gif Binary files differnew file mode 100644 index 0000000..a7754b6 --- /dev/null +++ b/webAO/misc/crossexamination.gif diff --git a/webAO/misc/holdit.gif b/webAO/misc/holdit.gif Binary files differnew file mode 100644 index 0000000..5f71ac6 --- /dev/null +++ b/webAO/misc/holdit.gif diff --git a/webAO/misc/objection.gif b/webAO/misc/objection.gif Binary files differnew file mode 100644 index 0000000..6aae2e5 --- /dev/null +++ b/webAO/misc/objection.gif diff --git a/webAO/misc/takethat.gif b/webAO/misc/takethat.gif Binary files differnew file mode 100644 index 0000000..dd03310 --- /dev/null +++ b/webAO/misc/takethat.gif diff --git a/webAO/misc/witnesstestimony.gif b/webAO/misc/witnesstestimony.gif Binary files differnew file mode 100644 index 0000000..03b4900 --- /dev/null +++ b/webAO/misc/witnesstestimony.gif diff --git a/webAO/sounds/general/sfx-testimony.wav b/webAO/sounds/general/sfx-testimony.wav Binary files differnew file mode 100644 index 0000000..ddbe9ea --- /dev/null +++ b/webAO/sounds/general/sfx-testimony.wav diff --git a/webAO/sounds/general/sfx-testimony2.wav b/webAO/sounds/general/sfx-testimony2.wav Binary files differnew file mode 100644 index 0000000..a49506e --- /dev/null +++ b/webAO/sounds/general/sfx-testimony2.wav diff --git a/webAO/ui.b.js b/webAO/ui.b.js index 22c0b2d..c0538b1 100644 --- a/webAO/ui.b.js +++ b/webAO/ui.b.js @@ -1,2 +1,2 @@ -!function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";var i=new(function(e){return e&&e.__esModule?e:{default:e}}(n(1)).default)({settings:{showPopoutIcon:!1,showCloseIcon:!1},dimensions:{minItemHeight:40},content:[{type:"row",content:[{type:"column",width:40,content:[{type:"component",componentName:"template",title:"Game",componentState:{id:"client_wrapper"}},{type:"component",title:"Miscellaneous",height:5,componentName:"template",componentState:{id:"misc"}}]},{type:"column",content:[{type:"row",height:65,content:[{type:"stack",content:[{type:"component",title:"Main",componentName:"template",componentState:{id:"mainmenu"}},{type:"component",title:"Log",componentName:"template",componentState:{id:"log"}}]},{type:"component",title:"Server chat",width:30,componentName:"template",componentState:{id:"ooc"}}]},{type:"row",content:[{type:"component",title:"Music",componentName:"template",componentState:{id:"music"}},{type:"stack",content:[{type:"component",title:"Settings",componentName:"template",componentState:{id:"client_settings"}},{type:"component",title:"About",componentName:"template",componentState:{id:"about"}}]}]}]}]}]});i.registerComponent("template",function(e,t){var n=document.querySelector("#"+t.id);e.getElement().html(n.content)}),i.init()},function(e,t,n){"use strict";(function(e){var n,i,o,s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}!function(s,a){"object"==r(t)&&"object"==r(e)?e.exports=a():(i=[],void 0===(o="function"==typeof(n=a)?n.apply(t,i):n)||(e.exports=o))}("undefined"==typeof self||self,function(){var e=Math.min,t=Math.floor,n=Math.max;return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=35)}([function(e,t,n){t.e=function(e){return $.zepto?e.touches?e.targetTouches[0]:e:e.originalEvent&&e.originalEvent.touches?e.originalEvent.touches[0]:e},t.j=function(e){var t,n;if("function"==typeof o.a)return o()(e);for(n in t=[],e)t.push(n);return t},t.d=function(e){if(window.location.hash)return function(e){var t=location.hash.match(new RegExp(e+"=([^&]*)"));return t?t[1]:null}(e);if(!window.location.search)return null;var t,n,i=window.location.search.substr(1).split("&"),o={};for(n=0;n<i.length;n++)o[(t=i[n].split("="))[0]]=t[1];return o[e]||null},t.b=function(e,t){for(var n in t)e[n]=t[n];return e},t.a=function(e){return(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)})(function(){e()})},t.g=function(e,t){if(!(t instanceof Array))throw new Error("Haystack is not an Array");if(t.indexOf)return t.indexOf(e);for(var n=0;n<t.length;n++)if(t[n]===e)return n;return-1},n.d(t,"h",function(){return a}),t.c=function(e,t,n){if(void 0!==Function.prototype.bind)return Function.prototype.bind.apply(e,[t].concat(n||[]));var i=function i(){var o=(n||[]).concat(Array.prototype.slice.call(arguments,0));return this instanceof i?void e.apply(this,o):e.apply(t,o)};return i.prototype=e.prototype,i},t.i=function(){return"function"==typeof Date.now?Date.now():(new Date).getTime()},t.f=function(){return(1e15*Math.random()).toString(36).replace(".","")},t.k=function(e){return $.trim(e.replace(/(<([^>]+)>)/gi,""))};var i=n(40),o=n.n(i),s=n(60),a=(n.n(s),"function"!=typeof/./&&"object"!=("undefined"==typeof Int8Array?"undefined":r(Int8Array))?function(e){return"function"==typeof e||!1}:function(e){return"[object Function]"===toString.call(e)})},function(e,t,n){var i=n(0),o="__all";t.a=o,t.b=function(){return function e(){c(this,e),this._mSubscriptions={},this._mSubscriptions[o]=[],this.on=function(e,t,n){if(!Object(i.h)(t))throw new Error("Tried to listen to event "+e+" with non-function callback "+t);this._mSubscriptions[e]||(this._mSubscriptions[e]=[]),this._mSubscriptions[e].push({fn:t,ctx:n})},this.emit=function(e){var t,n,i;i=Array.prototype.slice.call(arguments,1);var s=this._mSubscriptions[e];if(s)for(s=s.slice(),t=0;t<s.length;t++)n=s[t].ctx||{},s[t].fn.apply(n,i);i.unshift(e);var r=this._mSubscriptions[o].slice();for(t=0;t<r.length;t++)n=r[t].ctx||{},r[t].fn.apply(n,i)},this.unbind=function(e,t,n){if(!this._mSubscriptions[e])throw new Error("No subscribtions to unsubscribe for event "+e);var i,o=!1;for(i=0;i<this._mSubscriptions[e].length;i++)t&&this._mSubscriptions[e][i].fn!==t||n&&n!==this._mSubscriptions[e][i].ctx||(this._mSubscriptions[e].splice(i,1),o=!0);if(0==o)throw new Error("Nothing to unbind for "+e)},this.off=this.unbind,this.trigger=this.emit}}()},function(e){var t=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=t)},function(e,t,n){var i=n(1),o=n(26),r=n(12),h=n(27),u=n(66),d=n(0),f=function(e){function t(e,n,o){var s;return c(this,t),(s=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this))).config=s._extendItemNode(n),s.type=n.type,s.contentItems=[],s.parent=o,s.isInitialised=!1,s.isMaximised=!1,s.isRoot=!1,s.isRow=!1,s.isColumn=!1,s.isStack=!1,s.isComponent=!1,s.layoutManager=e,s._pendingEventPropagations={},s._throttledEvents=["stateChanged"],s.on(i.a,s._propagateEvent,s),n.content&&s._createContentItems(n),s}return l(t,i.b),s(t,[{key:"setSize",value:function(){throw new Error("Abstract Method")}},{key:"callDownwards",value:function(e,t,n,i){var o;for(!0!==n&&!0!==i&&this[e].apply(this,t||[]),o=0;o<this.contentItems.length;o++)this.contentItems[o].callDownwards(e,t,n);!0===n&&!0!==i&&this[e].apply(this,t||[])}},{key:"removeChild",value:function(e,t){var n=Object(d.g)(e,this.contentItems);if(-1===n)throw new Error("Can't remove child item. Unknown content item");!0!==t&&this.contentItems[n]._$destroy(),this.contentItems.splice(n,1),this.config.content.splice(n,1),0<this.contentItems.length?this.callDownwards("setSize"):!(this instanceof r.a)&&!0===this.config.isClosable&&this.parent.removeChild(this)}},{key:"undisplayChild",value:function(e){if(-1===Object(d.g)(e,this.contentItems))throw new Error("Can't remove child item. Unknown content item");this instanceof r.a||!0!==this.config.isClosable||this.parent.undisplayChild(this)}},{key:"addChild",value:function(e,t){void 0===t&&(t=this.contentItems.length),this.contentItems.splice(t,0,e),void 0===this.config.content&&(this.config.content=[]),this.config.content.splice(t,0,e.config),e.parent=this,!0===e.parent.isInitialised&&!1===e.isInitialised&&e._$init()}},{key:"replaceChild",value:function(e,t,n){t=this.layoutManager._$normalizeContentItem(t);var i=Object(d.g)(e,this.contentItems),o=e.element[0].parentNode;if(-1===i)throw new Error("Can't replace child. oldChild is not child of this");o.replaceChild(t.element[0],e.element[0]),!0===n&&(e.parent=null,e._$destroy()),this.contentItems[i]=t,t.parent=this,this.isStack&&(this.header.tabs[i].contentItem=t),!0===t.parent.isInitialised&&!1===t.isInitialised&&t._$init(),this.callDownwards("setSize")}},{key:"remove",value:function(){this.parent.removeChild(this)}},{key:"popout",value:function(){var e=this.layoutManager.createPopout(this);return this.emitBubblingEvent("stateChanged"),e}},{key:"toggleMaximise",value:function(e){e&&e.preventDefault(),!0===this.isMaximised?this.layoutManager._$minimiseItem(this):this.layoutManager._$maximiseItem(this),this.isMaximised=!this.isMaximised,this.emitBubblingEvent("stateChanged")}},{key:"select",value:function(){this.layoutManager.selectedItem!==this&&(this.layoutManager.selectItem(this,!0),this.element.addClass("lm_selected"))}},{key:"deselect",value:function(){this.layoutManager.selectedItem===this&&(this.layoutManager.selectedItem=null,this.element.removeClass("lm_selected"))}},{key:"setTitle",value:function(e){this.config.title=e,this.emit("titleChanged",e),this.emit("stateChanged")}},{key:"hasId",value:function(e){return!!this.config.id&&("string"==typeof this.config.id?this.config.id===e:this.config.id instanceof Array?-1!==Object(d.g)(e,this.config.id):void 0)}},{key:"addId",value:function(e){this.hasId(e)||(this.config.id?"string"==typeof this.config.id?this.config.id=[this.config.id,e]:this.config.id instanceof Array&&this.config.id.push(e):this.config.id=e)}},{key:"removeId",value:function(e){if(!this.hasId(e))throw new Error("Id not found");if("string"==typeof this.config.id)delete this.config.id;else if(this.config.id instanceof Array){var t=Object(d.g)(e,this.config.id);this.config.id.splice(t,1)}}},{key:"getItemsByFilter",value:function(e){var t=[];return function n(i){for(var o=0;o<i.contentItems.length;o++)!0===e(i.contentItems[o])&&t.push(i.contentItems[o]),n(i.contentItems[o])}(this),t}},{key:"getItemsById",value:function(e){return this.getItemsByFilter(function(t){return t.config.id instanceof Array?-1!==Object(d.g)(e,t.config.id):t.config.id===e})}},{key:"getItemsByType",value:function(e){return this._$getItemsByProperty("type",e)}},{key:"getComponentsByName",value:function(e){var t,n=this._$getItemsByProperty("componentName",e),i=[];for(t=0;t<n.length;t++)i.push(n[t].instance);return i}},{key:"_$getItemsByProperty",value:function(e,t){return this.getItemsByFilter(function(n){return n[e]===t})}},{key:"_$setParent",value:function(e){this.parent=e}},{key:"_$highlightDropZone",value:function(e,t,n){this.layoutManager.dropTargetIndicator.highlightArea(n)}},{key:"_$onDrop",value:function(e){this.addChild(e)}},{key:"_$hide",value:function(){this._callOnActiveComponents("hide"),this.element.hide(),this.layoutManager.updateSize()}},{key:"_$show",value:function(){this._callOnActiveComponents("show"),this.element.show(),this.layoutManager.updateSize()}},{key:"_callOnActiveComponents",value:function(e){var t,n,i=this.getItemsByType("stack");for(n=0;n<i.length;n++)(t=i[n].getActiveContentItem())&&t.isComponent&&t.container[e]()}},{key:"_$destroy",value:function(){this.emitBubblingEvent("beforeItemDestroyed"),this.callDownwards("_$destroy",[],!0,!0),this.element.remove(),this.emitBubblingEvent("itemDestroyed")}},{key:"_$getArea",value:function(e){var t=(e=e||this.element).offset(),n=e.width(),i=e.height();return{x1:t.left,y1:t.top,x2:t.left+n,y2:t.top+i,surface:n*i,contentItem:this}}},{key:"_$init",value:function(){var e;for(this.setSize(),e=0;e<this.contentItems.length;e++)this.childElementContainer.append(this.contentItems[e].element);this.isInitialised=!0,this.emitBubblingEvent("itemCreated"),this.emitBubblingEvent(this.type+"Created")}},{key:"emitBubblingEvent",value:function(e){var t=new o.a(e,this);this.emit(e,t)}},{key:"_createContentItems",value:function(e){var t,n;if(!(e.content instanceof Array))throw new h.a("content must be an Array",e);for(n=0;n<e.content.length;n++)t=this.layoutManager.createContentItem(e.content[n],this),this.contentItems.push(t)}},{key:"_extendItemNode",value:function(e){for(var t in u.a)void 0===e[t]&&(e[t]=u.a[t]);return e}},{key:"_propagateEvent",value:function(e,t){t instanceof o.a&&!1===t.isPropagationStopped&&!0===this.isInitialised&&(!1===this.isRoot&&this.parent?this.parent.emit.apply(this.parent,Array.prototype.slice.call(arguments,0)):this._scheduleEventPropagationToLayoutManager(e,t))}},{key:"_scheduleEventPropagationToLayoutManager",value:function(e,t){-1===Object(d.g)(e,this._throttledEvents)?this.layoutManager.emit(e,t.origin):!0!==this._pendingEventPropagations[e]&&(this._pendingEventPropagations[e]=!0,Object(d.a)(Object(d.c)(this._propagateEventToLayoutManager,this,[e,t])))}},{key:"_propagateEventToLayoutManager",value:function(e,t){this._pendingEventPropagations[e]=!1,this.layoutManager.emit(e,t)}}]),t}();t.a=f},function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},function(e,t,n){e.exports=!n(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,i,o){var r=Math.round,h=o(3),u=o(13),d=o(67),f=o(0),m=function(e){function i(e,t,n,o){var s;return c(this,i),(s=a(this,(i.__proto__||Object.getPrototypeOf(i)).call(this,t,n,o))).isRow=!e,s.isColumn=e,s.element=$('<div class="lm_item lm_'+(e?"column":"row")+'"></div>'),s.childElementContainer=s.element,s._splitterSize=t.config.dimensions.borderWidth,s._splitterGrabSize=t.config.dimensions.borderGrabWidth,s._isColumn=e,s._dimension=e?"height":"width",s._splitter=[],s._splitterPosition=null,s._splitterMinPosition=null,s._splitterMaxPosition=null,s}return l(i,h.a),s(i,[{key:"addChild",value:function(e,t,i){var o,s,r,a;if(e=this.layoutManager._$normalizeContentItem(e,this),void 0===t&&(t=this.contentItems.length),0<this.contentItems.length?(a=this._createSplitter(n(0,t-1)).element,0<t?(this.contentItems[t-1].element.after(a),a.after(e.element),this._isDocked(t-1)&&(this._splitter[t-1].element.hide(),this._splitter[t].element.show())):(this.contentItems[0].element.before(a),a.before(e.element))):this.childElementContainer.append(e.element),h.a.prototype.addChild.call(this,e,t),o=1/this.contentItems.length*100,!0!==i){for(r=0;r<this.contentItems.length;r++)this.contentItems[r]===e?e.config[this._dimension]=o:(s=this.contentItems[r].config[this._dimension]*=(100-o)/100,this.contentItems[r].config[this._dimension]=s);this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking()}else this.emitBubblingEvent("stateChanged")}},{key:"undisplayChild",value:function(e){var t,i=e.config[this._dimension],o=Object(f.g)(e,this.contentItems),s=n(o-1,0);if(-1===o)throw new Error("Can't undisplay child. ContentItem is not child of this Row or Column");this._splitter[s]&&this._splitter[s].element.hide(),s<this._splitter.length&&this._isDocked(s)&&this._splitter[s].element.hide();var r=this._isDocked();for(t=0;t<this.contentItems.length;t++)this.contentItems[t]===e?this.contentItems[t].config[this._dimension]=0:this._isDocked(t)||(this.contentItems[t].config[this._dimension]+=i/(this.contentItems.length-1-r));1===this.contentItems.length&&h.a.prototype.undisplayChild.call(this,e),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"removeChild",value:function(e,t){var i,o,s=e.config[this._dimension],r=Object(f.g)(e,this.contentItems),a=n(r-1,0);if(-1===r)throw new Error("Can't remove child. ContentItem is not child of this Row or Column");this._splitter[a]&&(this._splitter[a]._$destroy(),this._splitter.splice(a,1)),a<this._splitter.length&&this._isDocked(a)&&this._splitter[a].element.hide();var l=this._isDocked();for(i=0;i<this.contentItems.length;i++)this.contentItems[i]!==e&&(this._isDocked(i)||(this.contentItems[i].config[this._dimension]+=s/(this.contentItems.length-1-l)));h.a.prototype.removeChild.call(this,e,t),1===this.contentItems.length&&!0===this.config.isClosable?(o=this.contentItems[0],this.contentItems=[],this.parent.replaceChild(this,o,!0),this._validateDocking(this.parent)):(this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking())}},{key:"replaceChild",value:function(e,t){var n=e.config[this._dimension];h.a.prototype.replaceChild.call(this,e,t),t.config[this._dimension]=n,this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"setSize",value:function(){0<this.contentItems.length&&(this._calculateRelativeSizes(),this._setAbsoluteSizes()),this.emitBubblingEvent("stateChanged"),this.emit("resize")}},{key:"dock",value:function(e,t,i){if(1===this.contentItems.length)throw new Error("Can't dock child when it single");var o=e.config[this._dimension],s=this.layoutManager.config.dimensions.headerHeight,r=Object(f.g)(e,this.contentItems),a=n(r-1,0);if(-1===r)throw new Error("Can't dock child. ContentItem is not child of this Row or Column");var l,c=e._docker&&e._docker.docked;if(void 0===t||t!=c){if(c){for(this._splitter[a].element.show(),l=0;l<this.contentItems.length;l++){var h=e._docker.size;this.contentItems[l]===e?e.config[this._dimension]=h:(itemSize=this.contentItems[l].config[this._dimension]*=(100-h)/100,this.contentItems[l].config[this._dimension]=itemSize)}e._docker={docked:!1}}else{if(2>this.contentItems.length-this._isDocked())throw new Error("Can't dock child when it is last in "+this.config.type);var u={column:{first:"top",last:"bottom"},row:{first:"left",last:"right"}}[this.config.type][r?"last":"first"];e.header.position()!=u&&e.header.position(u),this._splitter[a]&&this._splitter[a].element.hide();var d=this._isDocked();for(l=0;l<this.contentItems.length;l++)this.contentItems[l]===e?this.contentItems[l].config[this._dimension]=0:this._isDocked(l)||(this.contentItems[l].config[this._dimension]+=o/(this.contentItems.length-1-d));e._docker={dimension:this._dimension,size:o,realSize:e.element[this._dimension]()-s,docked:!0},i&&e.childElementContainer[this._dimension](0)}e.element.toggleClass("lm_docked",e._docker.docked),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking()}}},{key:"_$init",value:function(){if(!0!==this.isInitialised){var e;for(h.a.prototype._$init.call(this),e=0;e<this.contentItems.length-1;e++)this.contentItems[e].element.after(this._createSplitter(e).element);for(e=0;e<this.contentItems.length;e++)this.contentItems[e]._header&&this.contentItems[e]._header.docked&&this.dock(this.contentItems[e],!0,!0)}}},{key:"_setAbsoluteSizes",value:function(){var e,t=this._calculateAbsoluteSizes();for(e=0;e<this.contentItems.length;e++)0<t.additionalPixel-e&&t.itemSizes[e]++,this._isColumn?(this.contentItems[e].element.width(t.totalWidth),this.contentItems[e].element.height(t.itemSizes[e])):(this.contentItems[e].element.width(t.itemSizes[e]),this.contentItems[e].element.height(t.totalHeight))}},{key:"_calculateAbsoluteSizes",value:function(){var e,n,i=(this.contentItems.length-1)*this._splitterSize,o=this.layoutManager.config.dimensions.headerHeight,s=this.element.width(),r=this.element.height(),a=0,l=[];for(this._isColumn?r-=i:s-=i,e=0;e<this.contentItems.length;e++)this._isDocked(e)&&(this._isColumn?r-=o-this._splitterSize:s-=o-this._splitterSize);for(e=0;e<this.contentItems.length;e++)n=this._isColumn?t(r*(this.contentItems[e].config.height/100)):t(s*(this.contentItems[e].config.width/100)),this._isDocked(e)&&(n=o),a+=n,l.push(n);return{itemSizes:l,additionalPixel:t((this._isColumn?r:s)-a),totalWidth:s,totalHeight:r}}},{key:"_calculateRelativeSizes",value:function(){var e,t=0,n=[],i=this._isColumn?"height":"width";for(e=0;e<this.contentItems.length;e++)void 0===this.contentItems[e].config[i]?n.push(this.contentItems[e]):t+=this.contentItems[e].config[i];if(100!==r(t))if(100>r(t)&&0<n.length){for(e=0;e<n.length;e++)n[e].config[i]=(100-t)/n.length;this._respectMinItemWidth()}else{if(100<r(t))for(e=0;e<n.length;e++)n[e].config[i]=50,t+=50;for(e=0;e<this.contentItems.length;e++)this.contentItems[e].config[i]=this.contentItems[e].config[i]/t*100;this._respectMinItemWidth()}else this._respectMinItemWidth()}},{key:"_respectMinItemWidth",value:function(){var e,t,n,i=this.layoutManager.config.dimensions&&this.layoutManager.config.dimensions.minItemWidth||0,o=null,s=[],a=0,l=0,c=0,h=0,u=[];if(!(this._isColumn||!i||1>=this.contentItems.length)){o=this._calculateAbsoluteSizes();for(var d=0;d<this.contentItems.length;d++)this.contentItems[d],(h=o.itemSizes[d])<i?(l+=i-h,n={width:i}):(a+=h-i,n={width:h},s.push(n)),u.push(n);if(!(0==l||l>a)){for(e=l/a,c=l,d=0;d<s.length;d++)n=s[d],c-=t=r((n.width-i)*e),n.width-=t;for(0!==c&&(u[u.length-1].width-=c),d=0;d<this.contentItems.length;d++)this.contentItems[d].config.width=u[d].width/o.totalWidth*100}}}},{key:"_createSplitter",value:function(e){var t;return(t=new d.a(this._isColumn,this._splitterSize,this._splitterGrabSize)).on("drag",Object(f.c)(this._onSplitterDrag,this,[t]),this),t.on("dragStop",Object(f.c)(this._onSplitterDragStop,this,[t]),this),t.on("dragStart",Object(f.c)(this._onSplitterDragStart,this,[t]),this),this._splitter.splice(e,0,t),t}},{key:"_getItemsForSplitter",value:function(e){var t=Object(f.g)(e,this._splitter);return{before:this.contentItems[t],after:this.contentItems[t+1]}}},{key:"_isDocked",value:function(e){if(void 0===e){for(var t=0,n=0;n<this.contentItems.length;++n)this._isDocked(n)&&t++;return t}return e<this.contentItems.length?this.contentItems[e]._docker&&this.contentItems[e]._docker.docked:void 0}},{key:"_validateDocking",value:function(e){for(var t=1<(e=e||this).contentItems.length-e._isDocked(),n=0;n<e.contentItems.length;++n)e.contentItems[n]instanceof u.a&&(e.contentItems[n].header._setDockable(e._isDocked(n)||t),e.contentItems[n].header._$setClosable(t))}},{key:"_getMinimumDimensions",value:function(e){for(var t=0,i=0,o=0;o<e.length;++o)t=n(e[o].minWidth||0,t),i=n(e[o].minHeight||0,i);return{horizontal:t,vertical:i}}},{key:"_onSplitterDragStart",value:function(e){var t=this._getItemsForSplitter(e),n=this.layoutManager.config.dimensions[this._isColumn?"minItemHeight":"minItemWidth"],i=this._getMinimumDimensions(t.before.config.content),o=this._isColumn?i.vertical:i.horizontal,s=this._getMinimumDimensions(t.after.config.content),r=this._isColumn?s.vertical:s.horizontal;this._splitterPosition=0,this._splitterMinPosition=-1*(t.before.element[this._dimension]()-(o||n)),this._splitterMaxPosition=t.after.element[this._dimension]()-(r||n)}},{key:"_onSplitterDrag",value:function(e,t,n){var i=this._isColumn?n:t;i>this._splitterMinPosition&&i<this._splitterMaxPosition&&(this._splitterPosition=i,e.element.css(this._isColumn?"top":"left",i))}},{key:"_onSplitterDragStop",value:function(e){var t=this._getItemsForSplitter(e),n=t.before.element[this._dimension](),i=t.after.element[this._dimension](),o=(this._splitterPosition+n)/(n+i),s=t.before.config[this._dimension]+t.after.config[this._dimension];t.before.config[this._dimension]=o*s,t.after.config[this._dimension]=(1-o)*s,e.element.css({top:0,left:0}),Object(f.a)(Object(f.c)(this.callDownwards,this,["setSize"]))}}]),i}();i.a=m},function(e,t,n){var i=n(1),o=n(0),r=function(e){function t(e,n){var i;return c(this,t),(i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)))._timeout=null,i._eElement=$(e),i._oDocument=$(document),i._eBody=$(document.body),i._nButtonCode=n||0,i._nDelay=200,i._nDistance=10,i._nX=0,i._nY=0,i._nOriginalX=0,i._nOriginalY=0,i._bDragging=!1,i._fMove=Object(o.c)(i.onMouseMove,i),i._fUp=Object(o.c)(i.onMouseUp,i),i._fDown=Object(o.c)(i.onMouseDown,i),i._eElement.on("mousedown touchstart",i._fDown),i}return l(t,i.b),s(t,[{key:"destroy",value:function(){this._eElement.unbind("mousedown touchstart",this._fDown),this._oDocument.unbind("mouseup touchend",this._fUp),this._eElement=null,this._oDocument=null,this._eBody=null}},{key:"onMouseDown",value:function(e){if(e.preventDefault(),0==e.button||"touchstart"===e.type){var t=this._getCoordinates(e);this._nOriginalX=t.x,this._nOriginalY=t.y,this._oDocument.on("mousemove touchmove",this._fMove),this._oDocument.one("mouseup touchend",this._fUp),this._timeout=setTimeout(Object(o.c)(this._startDrag,this),this._nDelay)}}},{key:"onMouseMove",value:function(e){var t=Math.abs;if(null!=this._timeout){e.preventDefault();var n=this._getCoordinates(e);this._nX=n.x-this._nOriginalX,this._nY=n.y-this._nOriginalY,!1===this._bDragging&&(t(this._nX)>this._nDistance||t(this._nY)>this._nDistance)&&(clearTimeout(this._timeout),this._startDrag()),this._bDragging&&this.emit("drag",this._nX,this._nY,e)}}},{key:"onMouseUp",value:function(e){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),!0===this._bDragging&&(this._bDragging=!1,this.emit("dragStop",e,this._nOriginalX+this._nX)))}},{key:"_startDrag",value: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)}},{key:"_getCoordinates",value:function(e){return{x:(e=Object(o.e)(e)).pageX,y:e.pageY}}}]),t}();t.a=r},function(e,t,n){var i=n(9);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e){e.exports=function(e){return"object"==(void 0===e?"undefined":r(e))?null!==e:"function"==typeof e}},function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(0);t.a=function(){function e(){if(c(this,e),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"],36<this._keys.length)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"]}return s(e,[{key:"minifyConfig",value:function(e){var t={};return this._nextLevel(e,t,"_min"),t}},{key:"unminifyConfig",value:function(e){var t={};return this._nextLevel(e,t,"_max"),t}},{key:"_nextLevel",value:function(e,t,n){var i,o;for(i in e)e instanceof Array&&(i=parseInt(i,10)),e.hasOwnProperty(i)&&(o=this[n](i,this._keys),"object"==r(e[i])?(t[o]=e[i]instanceof Array?[]:{},this._nextLevel(e[i],t[o],n)):t[o]=this[n](e[i],this._values))}},{key:"_min",value:function(e,t){if("string"==typeof e&&1===e.length)return"___"+e;var n=Object(i.g)(e,t);return-1===n?e:n.toString(36)}},{key:"_max",value:function(e,t){return"string"==typeof e&&1===e.length?t[parseInt(e,36)]:"string"==typeof e&&"___"===e.substr(0,3)?e[3]:e}}]),e}()},function(e,t,n){var i=n(3),o=n(6),r=function(e){function t(e,n,i){var o;return c(this,t),(o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,null))).isRoot=!0,o.type="root",o.element=$('<div class="lm_goldenlayout lm_item lm_root"></div>'),o.childElementContainer=o.element,o._containerElement=i,o._containerElement.append(o.element),o}return l(t,i.a),s(t,[{key:"addChild",value:function(e){if(0<this.contentItems.length)throw new Error("Root node can only have a single child");e=this.layoutManager._$normalizeContentItem(e,this),this.childElementContainer.append(e.element),i.a.prototype.addChild.call(this,e),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"setSize",value:function(e,t){e=void 0===e?this._containerElement.width():e,t=void 0===t?this._containerElement.height():t,this.element.width(e),this.element.height(t),this.contentItems[0]&&(this.contentItems[0].element.width(e),this.contentItems[0].element.height(t))}},{key:"_$highlightDropZone",value:function(){this.layoutManager.tabDropPlaceholder.remove(),i.a.prototype._$highlightDropZone.apply(this,arguments)}},{key:"_$onDrop",value:function(e,t){var n;if(e.isComponent&&((n=this.layoutManager.createContentItem({type:"stack",header:e.config.header||{}},this))._$init(),n.addChild(e),e=n),this.contentItems.length){("row"===e.config.type||"column"===e.config.type)&&((n=this.layoutManager.createContentItem({type:"stack"},this)).addChild(e),e=n);var i="x"==t.side[0]?"row":"column",s="x"==t.side[0]?"width":"height",r="2"==t.side[1],a=this.contentItems[0];if(a instanceof o.a&&a.type==i){var l=a.contentItems[r?0:a.contentItems.length-1];a.addChild(e,r?0:void 0,!0),l.config[s]*=.5,e.config[s]=l.config[s],a.callDownwards("setSize")}else{var c=this.layoutManager.createContentItem({type:i},this);this.replaceChild(a,c),c.addChild(e,r?0:void 0,!0),c.addChild(a,r?void 0:0,!0),a.config[s]=50,e.config[s]=50,c.callDownwards("setSize")}}else this.addChild(e)}}]),t}();t.a=r},function(t,i,o){var r=o(3),h=o(6),u=o(28),d=o(0),f=function(t){function i(e,t,n){var o;c(this,i),(o=a(this,(i.__proto__||Object.getPrototypeOf(i)).call(this,e,t,n))).element=$('<div class="lm_item lm_stack"></div>'),o._activeContentItem=null;var s=e.config;return o._header={show:!0===s.settings.hasHeaders&&!1!==t.hasHeaders,popout:s.settings.showPopoutIcon&&s.labels.popout,maximise:s.settings.showMaximiseIcon&&s.labels.maximise,close:s.settings.showCloseIcon&&s.labels.close,minimise:s.labels.minimise},s.header&&Object(d.b)(o._header,s.header),t.header&&Object(d.b)(o._header,t.header),t.content&&t.content[0]&&t.content[0].header&&Object(d.b)(o._header,t.content[0].header),o._dropZones={},o._dropSegment=null,o._contentAreaDimensions=null,o._dropIndex=null,o.isStack=!0,o.childElementContainer=$('<div class="lm_items"></div>'),o.header=new u.a(e,o),o.element.on("mouseleave mouseenter",Object(d.c)(function(e){this._docker&&this._docker.docked&&this.childElementContainer[this._docker.dimension]("mouseenter"==e.type?this._docker.realSize:0)},o)),o.element.append(o.header.element),o.element.append(o.childElementContainer),o._setupHeaderPosition(),o._$validateClosability(),o}return l(i,r.a),s(i,[{key:"dock",value:function(e){this._header.dock&&this.parent instanceof h.a&&this.parent.dock(this,e)}},{key:"setSize",value:function(){if("none"!==this.element.css("display")){var e=this._docker&&this._docker.docked,t={width:this.element.width(),height:this.element.height()};this._header.show&&(t[this._sided?"width":"height"]-=this.layoutManager.config.dimensions.headerHeight),e&&(t[this._docker.dimension]=this._docker.realSize),e&&"height"!=this._docker.dimension||this.childElementContainer.width(t.width),e&&"width"!=this._docker.dimension||this.childElementContainer.height(t.height);for(var n=0;n<this.contentItems.length;n++)this.contentItems[n].element.width(t.width),this.contentItems[n].element.height(t.height);this.emit("resize"),this.emitBubblingEvent("stateChanged")}}},{key:"_$init",value:function(){var e,t;if(!0!==this.isInitialised){for(r.a.prototype._$init.call(this),e=0;e<this.contentItems.length;e++)this.header.createTab(this.contentItems[e]),this.contentItems[e]._$hide();if(0<this.contentItems.length){if(!(t=this.contentItems[this.config.activeItemIndex||0]))throw new Error("Configured activeItemIndex out of bounds");this.setActiveContentItem(t)}}}},{key:"setActiveContentItem",value:function(e){if(-1===Object(d.g)(e,this.contentItems))throw new Error("contentItem is not a child of this stack");null!==this._activeContentItem&&this._activeContentItem._$hide(),this._activeContentItem=e,this.header.setActiveContentItem(e),e._$show(),this.emit("activeContentItemChanged",e),this.layoutManager.emit("activeContentItemChanged",e),this.emitBubblingEvent("stateChanged")}},{key:"getActiveContentItem",value:function(){return this.header.activeContentItem}},{key:"addChild",value:function(e,t){t>this.contentItems.length&&(t-=1),e=this.layoutManager._$normalizeContentItem(e,this),r.a.prototype.addChild.call(this,e,t),this.childElementContainer.append(e.element),this.header.createTab(e,t),this.setActiveContentItem(e),this.callDownwards("setSize"),this._$validateClosability(),this.parent instanceof h.a&&this.parent._validateDocking(),this.emitBubblingEvent("stateChanged")}},{key:"removeChild",value:function(e,t){var i=Object(d.g)(e,this.contentItems);r.a.prototype.removeChild.call(this,e,t),this.header.removeTab(e),this.header.activeContentItem===e&&(0<this.contentItems.length?this.setActiveContentItem(this.contentItems[n(i-1,0)]):this._activeContentItem=null),this._$validateClosability(),this.parent instanceof h.a&&this.parent._validateDocking(),this.emitBubblingEvent("stateChanged")}},{key:"undisplayChild",value:function(e){if(1<this.contentItems.length){var t=Object(d.g)(e,this.contentItems);e._$hide&&e._$hide(),this.setActiveContentItem(this.contentItems[0===t?t+1:t-1])}else this.header.hideTab(e),e._$hide&&e._$hide(),r.a.prototype.undisplayChild.call(this,e),this.parent instanceof h.a&&this.parent._validateDocking();this.emitBubblingEvent("stateChanged")}},{key:"_$validateClosability",value:function(){var e,t,n;for(e=this.header._isClosable(),n=0,t=this.contentItems.length;n<t&&e;n++)e=this.contentItems[n].config.isClosable;this.header._$setClosable(e)}},{key:"_$destroy",value:function(){r.a.prototype._$destroy.call(this),this.header._$destroy(),this.element.off("mouseenter mouseleave")}},{key:"_$onDrop",value:function(e){if("header"===this._dropSegment)return this._resetHeaderDropZone(),void this.addChild(e,this._dropIndex);if("body"!==this._dropSegment){var t,n,i,o="top"===this._dropSegment||"bottom"===this._dropSegment,s="left"===this._dropSegment||"right"===this._dropSegment,r="top"===this._dropSegment||"left"===this._dropSegment,a=o&&this.parent.isColumn||s&&this.parent.isRow,l=o?"column":"row",c=o?"height":"width";e.isComponent&&((n=this.layoutManager.createContentItem({type:"stack",header:e.config.header||{}},this))._$init(),n.addChild(e),e=n),("row"===e.config.type||"column"===e.config.type)&&((n=this.layoutManager.createContentItem({type:"stack"},this)).addChild(e),e=n),a?(t=Object(d.g)(this,this.parent.contentItems),this.parent.addChild(e,r?t:t+1,!0),this.config[c]*=.5,e.config[c]=this.config[c],this.parent.callDownwards("setSize")):(l=o?"column":"row",i=this.layoutManager.createContentItem({type:l},this),this.parent.replaceChild(this,i),i.addChild(e,r?0:void 0,!0),i.addChild(this,r?void 0:0,!0),this.config[c]=50,e.config[c]=50,i.callDownwards("setSize")),this.parent._validateDocking()}else this.addChild(e)}},{key:"_$highlightDropZone",value:function(e,t){var n,i;for(n in this._contentAreaDimensions)if((i=this._contentAreaDimensions[n].hoverArea).x1<e&&i.x2>e&&i.y1<t&&i.y2>t)return void("header"===n?(this._dropSegment="header",this._highlightHeaderDropZone(this._sided?t:e)):(this._resetHeaderDropZone(),this._highlightBodyDropZone(n)))}},{key:"_$getArea",value:function(){if("none"===this.element.css("display"))return null;var e=r.a.prototype._$getArea,t=e.call(this,this.header.element),n=e.call(this,this.childElementContainer),i=n.x2-n.x1,o=n.y2-n.y1;return this._contentAreaDimensions={header:{hoverArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2},highlightArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}}},this._activeContentItem&&!1===this._activeContentItem.isComponent?t: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}},e.call(this,this.element)):(this._contentAreaDimensions.left={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x1+.25*i,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x1+.5*i,y2:n.y2}},this._contentAreaDimensions.top={hoverArea:{x1:n.x1+.25*i,y1:n.y1,x2:n.x1+.75*i,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*i,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1+.5*i,y1:n.y1,x2:n.x2,y2:n.y2}},this._contentAreaDimensions.bottom={hoverArea:{x1:n.x1+.25*i,y1:n.y1+.5*o,x2:n.x1+.75*i,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1+.5*o,x2:n.x2,y2:n.y2}},e.call(this,this.element))}},{key:"_highlightHeaderDropZone",value:function(t){var n,i,o,s,r,a,l,c,h=this.header.tabs.length,u=!1;if(0===h)return l=this.header.element.offset(),void this.layoutManager.dropTargetIndicator.highlightArea({x1:l.left,x2:l.left+100,y1:l.top+this.header.element.height()-20,y2:l.top+this.header.element.height()});for(n=0;n<h;n++)if(r=(i=this.header.tabs[n].element).offset(),this._sided?(s=r.top,o=r.left,c=i.height()):(s=r.left,o=r.top,c=i.width()),t>s&&t<s+c){u=!0;break}if(!(0==u&&t<s)){if(t<s+c/2?(this._dropIndex=n,i.before(this.layoutManager.tabDropPlaceholder)):(this._dropIndex=e(n+1,h),i.after(this.layoutManager.tabDropPlaceholder)),this._sided){var d=this.layoutManager.tabDropPlaceholder.offset().top;return void this.layoutManager.dropTargetIndicator.highlightArea({x1:o,x2:o+i.innerHeight(),y1:d,y2:d+this.layoutManager.tabDropPlaceholder.width()})}a=this.layoutManager.tabDropPlaceholder.offset().left,this.layoutManager.dropTargetIndicator.highlightArea({x1:a,x2:a+this.layoutManager.tabDropPlaceholder.width(),y1:o,y2:o+i.innerHeight()})}}},{key:"_resetHeaderDropZone",value:function(){this.layoutManager.tabDropPlaceholder.remove()}},{key:"toggleMaximise",value:function(e){this.isMaximised||this.dock(!1),r.a.prototype.toggleMaximise.call(this,e)}},{key:"_setupHeaderPosition",value:function(){var e=0<=["right","left","bottom"].indexOf(this._header.show)&&this._header.show;if(this.header.element.toggle(!!this._header.show),this._side=e,this._sided=0<=["right","left"].indexOf(this._side),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 t=0<=["right","bottom"].indexOf(this._side)?"before":"after";this.header.element[t](this.childElementContainer),this.callDownwards("setSize")}}},{key:"_highlightBodyDropZone",value:function(e){var t=this._contentAreaDimensions[e].highlightArea;this.layoutManager.dropTargetIndicator.highlightArea(t),this._dropSegment=e}}]),i}();i.a=f},function(e){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var i=n(44),o=n(20);e.exports=Object.keys||function(e){return i(e,o)}},function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,t,n){var i=n(45),o=n(14);e.exports=function(e){return i(o(e))}},function(e){var n=Math.ceil;e.exports=function(e){return isNaN(e=+e)?0:(0<e?t:n)(e)}},function(e,t,n){var i=n(50)("keys"),o=n(52);e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){var i=n(4),o=n(2),s=n(54),r=n(56),a=n(16),l="prototype",c=function e(t,n,c){var h,u,d,f=t&e.F,m=t&e.G,p=t&e.S,g=t&e.P,y=t&e.B,v=t&e.W,_=m?o:o[n]||(o[n]={}),b=_[l],w=m?i:p?i[n]:(i[n]||{})[l];for(h in m&&(c=n),c)(u=!f&&w&&void 0!==w[h])&&a(_,h)||(d=u?w[h]:c[h],_[h]=m&&"function"!=typeof w[h]?c[h]:y&&u?s(d,i):v&&w[h]==d?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t[l]=e[l],t}(d):g&&"function"==typeof d?s(Function.call,d):d,g&&((_.virtual||(_.virtual={}))[h]=d,t&e.R&&b&&!b[h]&&r(b,h,d)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var i=n(8),o=n(57),s=n(58),r=Object.defineProperty;t.f=n(5)?Object.defineProperty:function(e,t,n){if(i(e),t=s(t,!0),i(n),o)try{return r(e,t,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var i=n(9),o=n(4).document,s=i(o)&&i(o.createElement);e.exports=function(e){return s?o.createElement(e):{}}},function(e,t){t.a=function(){function e(t,n){c(this,e),this._reactComponent=null,this._originalComponentWillUpdate=null,this._container=t,this._initialState=n,this._reactClass=this._getReactClass(),this._container.on("open",this._render,this),this._container.on("destroy",this._destroy,this)}return s(e,[{key:"_render",value:function(){this._reactComponent=ReactDOM.render(this._getReactComponent(),this._container.getElement()[0]),this._originalComponentWillUpdate=this._reactComponent.componentWillUpdate||function(){},this._reactComponent.componentWillUpdate=this._onUpdate.bind(this),this._container.getState()&&this._reactComponent.setState(this._container.getState())}},{key:"_destroy",value:function(){ReactDOM.unmountComponentAtNode(this._container.getElement()[0]),this._container.off("open",this._render,this),this._container.off("destroy",this._destroy,this)}},{key:"_onUpdate",value:function(e,t){this._container.setState(t),this._originalComponentWillUpdate.call(this._reactComponent,e,t)}},{key:"_getReactClass",value:function(){var e,t=this._container._config.component;if(!t)throw new Error("No react component name. type: react-component needs a field `component`");if(!(e=this._container.layoutManager.getComponent(t)))throw new Error('React component "'+t+'" not found. Please register all components with GoldenLayout using `registerComponent(name, component)`');return e}},{key:"_getReactComponent",value:function(){var e={glEventHub:this._container.layoutManager.eventHub,glContainer:this._container},t=$.extend(e,this._container._config.props);return React.createElement(this._reactClass,t)}}]),e}()},function(e,t,n){var i=n(1),o=n(0),r=function(e){function t(e){var n;return c(this,t),(n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)))._layoutManager=e,n._dontPropagateToParent=null,n._childEventSource=null,n.on(i.a,Object(o.c)(n._onEventFromThis,n)),n._boundOnEventFromChild=Object(o.c)(n._onEventFromChild,n),$(window).on("gl_child_event",n._boundOnEventFromChild),n}return l(t,i.b),s(t,[{key:"_onEventFromThis",value:function(){var e=Array.prototype.slice.call(arguments);this._layoutManager.isSubWindow&&e[0]!==this._dontPropagateToParent&&this._propagateToParent(e),this._propagateToChildren(e),this._dontPropagateToParent=null,this._childEventSource=null}},{key:"_$onEventFromParent",value:function(e){this._dontPropagateToParent=e[0],this.emit.apply(this,e)}},{key:"_onEventFromChild",value:function(e){this._childEventSource=e.originalEvent.__gl,this.emit.apply(this,e.originalEvent.__glArgs)}},{key:"_propagateToParent",value:function(e){var t,n="gl_child_event";document.createEvent?(t=window.opener.document.createEvent("HTMLEvents")).initEvent(n,!0,!0):(t=window.opener.document.createEventObject()).eventType=n,t.eventName=n,t.__glArgs=e,t.__gl=this._layoutManager,document.createEvent?window.opener.dispatchEvent(t):window.opener.fireEvent("on"+t.eventType,t)}},{key:"_propagateToChildren",value:function(e){var t,n;for(n=0;n<this._layoutManager.openPopouts.length;n++)(t=this._layoutManager.openPopouts[n].getGlInstance())&&t!==this._childEventSource&&t.eventHub._$onEventFromParent(e)}},{key:"destroy",value:function(){$(window).off("gl_child_event",this._boundOnEventFromChild)}}]),t}();t.a=r},function(e,t){t.a=function(){function e(t,n){c(this,e),this.name=t,this.origin=n,this.isPropagationStopped=!1}return s(e,[{key:"stopPropagation",value:function(){this.isPropagationStopped=!0}}]),e}()},function(e,t){var n=function(e){function t(e,n){var i;return c(this,t),(i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this))).name="Configuration Error",i.message=e,i.node=n,i}return l(t,Error),t}();t.a=n},function(e,t,n){var i=n(1),o=n(29),r=n(31),h=n(0),u=function(e){function t(e,n){var i;return c(this,t),(i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this))).layoutManager=e,i.element=$('<div class="lm_header"><ul class="lm_tabs"></ul><ul class="lm_controls"></ul><ul class="lm_tabdropdown_list"></ul></div>'),!0===i.layoutManager.config.settings.selectionEnabled&&(i.element.addClass("lm_selectable"),i.element.on("click touchstart",Object(h.c)(i._onHeaderClick,i))),i.tabsContainer=i.element.find(".lm_tabs"),i.tabDropdownContainer=i.element.find(".lm_tabdropdown_list"),i.tabDropdownContainer.hide(),i.controlsContainer=i.element.find(".lm_controls"),i.parent=n,i.parent.on("resize",i._updateTabSizes,i),i.tabs=[],i.tabsMarkedForRemoval=[],i.activeContentItem=null,i.closeButton=null,i.dockButton=null,i.tabDropdownButton=null,i.hideAdditionalTabsDropdown=Object(h.c)(i._hideAdditionalTabsDropdown,i),$(document).mouseup(i.hideAdditionalTabsDropdown),i._lastVisibleTabIndex=-1,i._tabControlOffset=i.layoutManager.config.settings.tabControlOffset,i._createControls(),i}return l(t,i.b),s(t,[{key:"createTab",value:function(e,t){var n,i;for(i=0;i<this.tabs.length;i++)if(this.tabs[i].contentItem===e)return;return n=new o.a(this,e),0===this.tabs.length?(this.tabs.push(n),void this.tabsContainer.append(n.element)):(void 0===t&&(t=this.tabs.length),0<t?this.tabs[t-1].element.after(n.element):this.tabs[0].element.before(n.element),this.tabs.splice(t,0,n),void this._updateTabSizes())}},{key:"removeTab",value:function(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t]._$destroy(),void this.tabs.splice(t,1);for(t=0;t<this.tabsMarkedForRemoval.length;t++)if(this.tabsMarkedForRemoval[t].contentItem===e)return this.tabsMarkedForRemoval[t]._$destroy(),void this.tabsMarkedForRemoval.splice(t,1);throw new Error("contentItem is not controlled by this header")}},{key:"hideTab",value:function(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t].element.hide(),this.tabsMarkedForRemoval.push(this.tabs[t]),void this.tabs.splice(t,1);throw new Error("contentItem is not controlled by this header")}},{key:"setActiveContentItem",value:function(e){var t,n,i,o;for(t=0;t<this.tabs.length;t++)i=this.tabs[t].contentItem===e,this.tabs[t].setActive(i),!0===i&&(this.activeContentItem=e,this.parent.config.activeItemIndex=t);if(this.layoutManager.config.settings.reorderOnTabMenuClick&&-1!==this._lastVisibleTabIndex&&this.parent.config.activeItemIndex>this._lastVisibleTabIndex){for(o=this.tabs[this.parent.config.activeItemIndex],n=this.parent.config.activeItemIndex;0<n;n--)this.tabs[n]=this.tabs[n-1];this.tabs[0]=o,this.parent.config.activeItemIndex=0}this._updateTabSizes(),this.parent.emitBubblingEvent("stateChanged")}},{key:"position",value:function(e){var t=this.parent._header.show;if(this.parent._docker&&this.parent._docker.docked)throw new Error("Can't change header position in docked stack");return t&&!this.parent._side&&(t="top"),void 0!==e&&this.parent._header.show!=e&&(this.parent._header.show=e,this.parent._setupHeaderPosition()),t}},{key:"_$setClosable",value:function(e){return this._canDestroy=e||1<this.tabs.length,this.closeButton&&this._isClosable()&&(this.closeButton.element[e?"show":"hide"](),!0)}},{key:"_setDockable",value:function(e){return this.dockButton&&this.parent._header&&this.parent._header.dock&&(this.dockButton.element.toggle(!!e),!0)}},{key:"_$destroy",value:function(){this.emit("destroy",this);for(var e=0;e<this.tabs.length;e++)this.tabs[e]._$destroy();$(document).off("mouseup",this.hideAdditionalTabsDropdown),this.element.remove()}},{key:"_getHeaderSetting",value:function(e){if(e in this.parent._header)return this.parent._header[e]}},{key:"_createControls",value:function(){var e,t,n,i,o,s,a,l,c;if(c=Object(h.c)(this._showAdditionalTabsDropdown,this),l=this.layoutManager.config.labels.tabDropdown,this.tabDropdownButton=new r.a(this,l,"lm_tabdropdown",c),this.tabDropdownButton.element.hide(),this.parent._header&&this.parent._header.dock){var u=Object(h.c)(this.parent.dock,this.parent);n=this._getHeaderSetting("dock"),this.dockButton=new r.a(this,n,"lm_dock",u)}this._getHeaderSetting("popout")&&(t=Object(h.c)(this._onPopoutClick,this),n=this._getHeaderSetting("popout"),new r.a(this,n,"lm_popout",t)),this._getHeaderSetting("maximise")&&(s=Object(h.c)(this.parent.toggleMaximise,this.parent),i=this._getHeaderSetting("maximise"),o=this._getHeaderSetting("minimise"),a=new r.a(this,i,"lm_maximise",s),this.parent.on("maximised",function(){a.element.attr("title",o)}),this.parent.on("minimised",function(){a.element.attr("title",i)})),this._isClosable()&&(e=Object(h.c)(this.parent.remove,this.parent),n=this._getHeaderSetting("close"),this.closeButton=new r.a(this,n,"lm_close",e))}},{key:"_showAdditionalTabsDropdown",value:function(){this.tabDropdownContainer.show()}},{key:"_hideAdditionalTabsDropdown",value:function(){this.tabDropdownContainer.hide()}},{key:"_isClosable",value:function(){return this.parent.config.isClosable&&this.layoutManager.config.settings.showCloseIcon}},{key:"_onPopoutClick",value:function(){!0===this.layoutManager.config.settings.popoutWholeStack?this.parent.popout():this.activeContentItem.popout()}},{key:"_onHeaderClick",value:function(e){e.target===this.element[0]&&this.parent.select()}},{key:"_updateTabSizes",value:function(e){if(0!==this.tabs.length){this.tabDropdownButton.element.toggle(!0===e);var t=function(e){return e?"width":"height"};this.element.css(t(!this.parent._sided),""),this.element[t(this.parent._sided)](this.layoutManager.config.dimensions.headerHeight);var n,i,o,s,r=this.element.outerWidth()-this.controlsContainer.outerWidth()-this._tabControlOffset,a=0,l=0,c=0,h=this.layoutManager.config.settings.tabOverlapAllowance,u=!1,d=this.activeContentItem?this.tabs.indexOf(this.activeContentItem.tab):0,f=this.tabs[d];for(this.parent._sided&&(r=this.element.outerHeight()-this.controlsContainer.outerHeight()-this._tabControlOffset),this._lastVisibleTabIndex=-1,i=0;i<this.tabs.length;i++)if(n=this.tabs[i].element,this.tabsContainer.append(n),a+=n.outerWidth()+parseInt(n.css("margin-right"),10),(l=d<=i?a:a+f.element.outerWidth()+parseInt(f.element.css("margin-right"),10))>r){if(u)i===d&&(n.css({"z-index":"auto","margin-left":""}),this.tabsContainer.append(n));else if((c=0<d&&d<=i?(l-r)/(i-1):(l-r)/i)<h){for(o=0;o<=i;o++)s=o!==d&&0!==o?"-"+c+"px":"",this.tabs[o].element.css({"z-index":i-o,"margin-left":s});this._lastVisibleTabIndex=i,this.tabsContainer.append(n)}else u=!0;if(u&&i!==d){if(!e)return void this._updateTabSizes(!0);n.css({"z-index":"auto","margin-left":""}),this.tabDropdownContainer.append(n)}}else this._lastVisibleTabIndex=i,n.css({"z-index":"auto","margin-left":""}),this.tabsContainer.append(n)}}}]),t}();t.a=u},function(e,t,n){var i=n(7),o=n(30),r=n(0);t.a=function(){function e(t,n){c(this,e),this.header=t,this.contentItem=n,this.element=$('<li class="lm_tab"><i class="lm_left"></i><span class="lm_title"></span><div class="lm_close_tab"></div><i class="lm_right"></i></li>'),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,!0===this._layoutManager.config.settings.reorderEnabled&&!0===n.config.reorderEnabled&&(this._dragListener=new i.a(this.element),this._dragListener.on("dragStart",this._onDragStart,this),this.contentItem.on("destroy",this._dragListener.destroy,this._dragListener)),this._onTabClickFn=Object(r.c)(this._onTabClick,this),this._onCloseClickFn=Object(r.c)(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))}return s(e,[{key:"setTitle",value:function(e){this.element.attr("title",Object(r.k)(e)),this.titleElement.html(e)}},{key:"setActive",value:function(e){e===this.isActive||(this.isActive=e,e?this.element.addClass("lm_active"):this.element.removeClass("lm_active"))}},{key:"_$destroy",value: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()}},{key:"_onDragStart",value:function(e,t){return this.header._canDestroy?(!0===this.contentItem.parent.isMaximised&&this.contentItem.parent.toggleMaximise(),void new o.a(e,t,this._dragListener,this._layoutManager,this.contentItem,this.header.parent)):null}},{key:"_onTabClick",value:function(e){if(0===e.button||"touchstart"===e.type){var t=this.header.parent.getActiveContentItem();this.contentItem!==t&&this.header.parent.setActiveContentItem(this.contentItem)}else 1===e.button&&this.contentItem.config.isClosable&&this._onCloseClick(e)}},{key:"_onCloseClick",value:function(e){e.stopPropagation(),this.header._canDestroy&&this.header.parent.removeChild(this.contentItem)}},{key:"_onCloseMousedown",value:function(e){e.stopPropagation()}}]),e}()},function(e,t,n){var i=n(1),o=n(0),r=function(e){function t(e,n,i,s,r,l){var h;c(this,t),(h=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)))._dragListener=i,h._layoutManager=s,h._contentItem=r,h._originalParent=l,h._area=null,h._lastValidArea=null,h._dragListener.on("drag",h._onDrag,h),h._dragListener.on("dragStop",h._onDrop,h),h.element=$('<div class="lm_dragProxy"><div class="lm_header"><ul class="lm_tabs"><li class="lm_tab lm_active"><i class="lm_left"></i><span class="lm_title"></span><i class="lm_right"></i></li></ul></div><div class="lm_content"></div></div>'),l&&l._side&&(h._sided=l._sided,h.element.addClass("lm_"+l._side),0<=["right","bottom"].indexOf(l._side)&&h.element.find(".lm_content").after(h.element.find(".lm_header"))),h.element.css({left:e,top:n}),h.element.find(".lm_tab").attr("title",Object(o.k)(h._contentItem.config.title)),h.element.find(".lm_title").html(h._contentItem.config.title),h.childElementContainer=h.element.find(".lm_content"),h.childElementContainer.append(r.element),h._undisplayTree(),h._layoutManager._$calculateItemAreas(),h._setDimensions(),$(document.body).append(h.element);var u=h._layoutManager.container.offset();return h._minX=u.left,h._minY=u.top,h._maxX=h._layoutManager.container.width()+h._minX,h._maxY=h._layoutManager.container.height()+h._minY,h._width=h.element.width(),h._height=h.element.height(),h._setDropPosition(e,n),h}return l(t,i.b),s(t,[{key:"_onDrag",value:function(e,t,n){var i=(n=Object(o.e)(n)).pageX,s=n.pageY;(i>this._minX&&i<this._maxX&&s>this._minY&&s<this._maxY||!0!==this._layoutManager.config.settings.constrainDragToContainer)&&this._setDropPosition(i,s)}},{key:"_setDropPosition",value:function(e,t){this.element.css({left:e,top:t}),this._area=this._layoutManager._$getArea(e,t),null!==this._area&&(this._lastValidArea=this._area,this._area.contentItem._$highlightDropZone(e,t,this._area))}},{key:"_onDrop",value:function(){this._updateTree(),this._layoutManager.dropTargetIndicator.hide(),null===this._area?null===this._lastValidArea?this._originalParent?this._originalParent.addChild(this._contentItem):this._contentItem._$destroy():this._lastValidArea.contentItem._$onDrop(this._contentItem,this._lastValidArea):this._area.contentItem._$onDrop(this._contentItem,this._area),this.element.remove(),this._layoutManager.emit("itemDropped",this._contentItem)}},{key:"_undisplayTree",value:function(){this._contentItem.parent&&this._contentItem.parent.undisplayChild(this._contentItem)}},{key:"_updateTree",value:function(){this._contentItem.parent&&this._contentItem.parent.removeChild(this._contentItem,!0),this._contentItem._$setParent(this)}},{key:"_setDimensions",value:function(){var e=this._layoutManager.config.dimensions,t=e.dragProxyWidth,n=e.dragProxyHeight;this.element.width(t),this.element.height(n),t-=this._sided?e.headerHeight:0,n-=this._sided?0:e.headerHeight,this.childElementContainer.width(t),this.childElementContainer.height(n),this._contentItem.element.width(t),this._contentItem.element.height(n),this._contentItem.callDownwards("_$show"),this._contentItem.callDownwards("setSize")}}]),t}();t.a=r},function(e,t){t.a=function(){function e(t,n,i,o){c(this,e),this._header=t,this.element=$('<li class="'+i+'" title="'+n+'"></li>'),this._header.on("destroy",this._$destroy,this),this._action=o,this.element.on("click touchstart",this._action),this._header.controlsContainer.append(this.element)}return s(e,[{key:"_$destroy",value:function(){this.element.off(),this.element.remove()}}]),e}()},function(e,t,n){var i=n(3),o=n(33),r=function(e){function t(e,n,i){c(this,t);var s=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,i)),r=e.getComponent(s.config.componentName),l=$.extend(!0,{},s.config.componentState||{});return l.componentName=s.config.componentName,s.componentName=s.config.componentName,""===s.config.title&&(s.config.title=s.config.componentName),s.isComponent=!0,s.container=new o.a(s.config,s,e),s.instance=new r(s.container,l),s.element=s.container._element,s}return l(t,i.a),s(t,[{key:"close",value:function(){this.parent.removeChild(this)}},{key:"setSize",value:function(){"none"!==this.element.css("display")&&this.container._$setSize(this.element.width(),this.element.height())}},{key:"_$init",value:function(){i.a.prototype._$init.call(this),this.container.emit("open")}},{key:"_$hide",value:function(){this.container.hide(),i.a.prototype._$hide.call(this)}},{key:"_$show",value:function(){this.container.show(),i.a.prototype._$show.call(this)}},{key:"_$shown",value:function(){this.container.shown(),i.a.prototype._$shown.call(this)}},{key:"_$destroy",value:function(){this.container.emit("destroy",this),i.a.prototype._$destroy.call(this)}},{key:"_$getArea",value:function(){return null}}]),t}();t.a=r},function(e,t,n){var i=n(1),o=function(e){function t(e,n,i){var o;return c(this,t),(o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this))).width=null,o.height=null,o.title=e.componentName,o.parent=n,o.layoutManager=i,o.isHidden=!1,o._config=e,o._element=$('<div class="lm_item_container"><div class="lm_content"></div></div>'),o._contentElement=o._element.find(".lm_content"),o}return l(t,i.b),s(t,[{key:"getElement",value:function(){return this._contentElement}},{key:"hide",value:function(){this.emit("hide"),this.isHidden=!0,this._element.hide()}},{key:"show",value:function(){this.emit("show"),this.isHidden=!1,this._element.show(),(0!=this.height||0!=this.width)&&this.emit("shown")}},{key:"setSize",value:function(e,t){for(var n,i,o,s,r=this.parent,a=this;!r.isColumn&&!r.isRow;)if(a=r,(r=r.parent).isRoot)return!1;for(n=("height"===(i=r.isColumn?"height":"width")?t:e)/(this[i]*(1/(a.config[i]/100)))*100,o=(a.config[i]-n)/(r.contentItems.length-1),s=0;s<r.contentItems.length;s++)r.contentItems[s]===a?r.contentItems[s].config[i]=n:r.contentItems[s].config[i]+=o;return r.callDownwards("setSize"),!0}},{key:"close",value:function(){this._config.isClosable&&(this.emit("close"),this.parent.close())}},{key:"getState",value:function(){return this._config.componentState}},{key:"extendState",value:function(e){this.setState($.extend(!0,this.getState(),e))}},{key:"setState",value:function(e){this._config.componentState=e,this.parent.emitBubblingEvent("stateChanged")}},{key:"setTitle",value:function(e){this.parent.setTitle(e)}},{key:"_$setSize",value:function(e,t){(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,$.zepto?this._contentElement.width(e):this._contentElement.outerWidth(e),$.zepto?this._contentElement.height(t):this._contentElement.outerHeight(t),this.emit("resize"))}}]),t}();t.a=o},function(e,n,i){var o=i(68),r=i.n(o),h=i(1),u=i(11),d=i(0),f=function(e){function n(e,t,i,o,s){var r;return c(this,n),(r=a(this,(n.__proto__||Object.getPrototypeOf(n)).call(this))).isInitialised=!1,r._config=e,r._dimensions=t,r._parentId=i,r._indexInParent=o,r._layoutManager=s,r._popoutWindow=null,r._id=null,r._createWindow(),r}return l(n,h.b),s(n,[{key:"toConfig",value:function(){if(!1===this.isInitialised)throw new Error("Can't create config, layout not yet initialised");return{dimensions:{width:this.getGlInstance().width,height:this.getGlInstance().height,left:this._popoutWindow.screenX||this._popoutWindow.screenLeft,top:this._popoutWindow.screenY||this._popoutWindow.screenTop},content:this.getGlInstance().toConfig().content,parentId:this._parentId,indexInParent:this._indexInParent}}},{key:"getGlInstance",value:function(){return this._popoutWindow.__glInstance}},{key:"getWindow",value:function(){return this._popoutWindow}},{key:"close",value:function(){if(this.getGlInstance())this.getGlInstance()._$closeWindow();else try{this.getWindow().close()}catch(e){}}},{key:"popIn",value:function(){var e,t;this._indexInParent;this._parentId&&(e=$.extend(!0,{},this.getGlInstance().toConfig()).content[0],!(t=this._layoutManager.root.getItemsById(this._parentId)[0])&&(t=0<this._layoutManager.root.contentItems.length?this._layoutManager.root.contentItems[0]:this._layoutManager.root)),t.addChild(e,this._indexInParent),this.close()}},{key:"_createWindow",value:function(){var e,n=this._createUrl(),i=t(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,i,o),this._popoutWindow)$(this._popoutWindow).on("load",Object(d.c)(this._positionWindow,this)).on("unload beforeunload",Object(d.c)(this._onClose,this)),e=setInterval(Object(d.c)(function(){this._popoutWindow.__glInstance&&this._popoutWindow.__glInstance.isInitialised&&(this._onInitialised(),clearInterval(e))},this),10);else if(!0===this._layoutManager.config.settings.blockedPopoutsThrowError){var s=new Error("Popout blocked");throw s.type="popoutBlocked",s}}},{key:"_serializeWindowOptions",value:function(e){var t,n=[];for(t in e)n.push(t+"="+e[t]);return n.join(",")}},{key:"_createUrl",value:function(){var e,t={content:this._config},n="gl-window-config-"+Object(d.f)();t=(new u.a).minifyConfig(t);try{localStorage.setItem(n,r()(t))}catch(t){throw new Error("Error while writing to localStorage "+t.toString())}return 1===(e=document.location.href.split("?")).length?e[0]+"?gl-window="+n:document.location.href+"&gl-window="+n}},{key:"_positionWindow",value:function(){this._popoutWindow.moveTo(this._dimensions.left,this._dimensions.top),this._popoutWindow.focus()}},{key:"_onInitialised",value:function(){this.isInitialised=!0,this.getGlInstance().on("popIn",this.popIn,this),this.emit("initialised")}},{key:"_onClose",value:function(){setTimeout(Object(d.c)(this.emit,this,["closed"]),50)}}]),n}();n.a=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var i=n(36),o=(n.n(i),n(37)),s=(n.n(o),n(38)),r=(n.n(s),n(39));n.d(t,"default",function(){return r.a});var a=n(33);n.d(t,"ItemContainer",function(){return a.a});var l=n(34);n.d(t,"BrowserPopout",function(){return l.a});var c=n(28);n.d(t,"Header",function(){return c.a});var h=n(31);n.d(t,"HeaderButton",function(){return h.a});var u=n(29);n.d(t,"Tab",function(){return u.a});var d=n(32);n.d(t,"Component",function(){return d.a});var f=n(12);n.d(t,"Root",function(){return f.a});var m=n(6);n.d(t,"RowOrColumn",function(){return m.a});var p=n(13);n.d(t,"Stack",function(){return p.a});var g=n(26);n.d(t,"BubblingEvent",function(){return g.a});var y=n(11);n.d(t,"ConfigMinifier",function(){return y.a});var v=n(7);n.d(t,"DragListener",function(){return v.a});var _=n(1);n.d(t,"EventEmitter",function(){return _.b});var b=n(25);n.d(t,"EventHub",function(){return b.a});var w=n(24);n.d(t,"ReactComponentHandler",function(){return w.a}),{}.ES6&&(n(74),n(77))},function(){},function(){},function(){},function(e,i,o){var h=o(1),u=o(24),d=o(11),f=o(25),m=o(12),p=o(6),g=o(13),y=o(32),v=o(3),_=o(34),b=o(70),w=o(71),x=o(72),k=o(27),I=o(73),C=o(0),S=function(e){function i(e,t){var n;if(c(this,i),!$){var o="jQuery is missing as dependency for GoldenLayout. ";throw o+='Please either expose $ on GoldenLayout\'s scope (e.g. window) or add "jquery" to ',o+="your paths when using RequireJS/AMD",new Error(o)}return(n=a(this,(i.__proto__||Object.getPrototypeOf(i)).call(this))).isInitialised=!1,n._isFullPage=!1,n._resizeTimeoutId=null,n._components={"lm-react-component":u.a},n._itemAreas=[],n._resizeFunction=Object(C.c)(n._onResize,n),n._unloadFunction=Object(C.c)(n._onUnload,n),n._maximisedItem=null,n._maximisePlaceholder=$('<div class="lm_maximise_place"></div>'),n._creationTimeoutPassed=!1,n._subWindowsCreated=!1,n._dragSources=[],n._updatingColumnsResponsive=!1,n._firstLoad=!0,n.width=null,n.height=null,n.root=null,n.openPopouts=[],n.selectedItem=null,n.isSubWindow=!1,n.eventHub=new f.a(n),n.config=n._createConfig(e),n.container=t,n.dropTargetIndicator=null,n.transitionIndicator=null,n.tabDropPlaceholder=$('<div class="lm_drop_tab_placeholder"></div>'),!0===n.isSubWindow&&$("body").css("visibility","hidden"),n._typeToItem={column:Object(C.c)(p.a,n,[!0]),row:Object(C.c)(p.a,n,[!1]),stack:g.a,component:y.a},n}return l(i,h.b),s(i,[{key:"minifyConfig",value:function(e){return(new d.a).minifyConfig(e)}},{key:"unminifyConfig",value:function(e){return(new d.a).unminifyConfig(e)}},{key:"registerComponent",value:function(e,t){if("function"!=typeof t)throw new Error("Please register a constructor function");if(void 0!==this._components[e])throw new Error("Component "+e+" is already registered");this._components[e]=t}},{key:"toConfig",value:function(e){var t,n,i;if(!1===this.isInitialised)throw new Error("Can't create config, layout not yet initialised");if(e&&!(e instanceof v.a))throw new Error("Root must be a ContentItem");for((t={settings:Object(C.b)({},this.config.settings),dimensions:Object(C.b)({},this.config.dimensions),labels:Object(C.b)({},this.config.labels)}).content=[],(n=function(e,t){var i,o;for(i in t.config)"content"!==i&&(e[i]=t.config[i]);if(t.contentItems.length)for(e.content=[],o=0;o<t.contentItems.length;o++)e.content[o]={},n(e.content[o],t.contentItems[o])})(t,e?{contentItems:[e]}:this.root),this._$reconcilePopoutWindows(),t.openPopouts=[],i=0;i<this.openPopouts.length;i++)t.openPopouts.push(this.openPopouts[i].toConfig());return t.maximisedItemId=this._maximisedItem?"__glMaximised":null,t}},{key:"getComponent",value:function(e){if(void 0===this._components[e])throw new k.a('Unknown component "'+e+'"');return this._components[e]}},{key:"init",value:function(){return!1===this._subWindowsCreated&&(this._createSubWindows(),this._subWindowsCreated=!0),"loading"===document.readyState||null===document.body?void $(document).ready(Object(C.c)(this.init,this)):!0===this.isSubWindow&&!1===this._creationTimeoutPassed?(setTimeout(Object(C.c)(this.init,this),7),void(this._creationTimeoutPassed=!0)):(!0===this.isSubWindow&&this._adjustToWindowMode(),this._setContainer(),this.dropTargetIndicator=new w.a(this.container),this.transitionIndicator=new x.a,this.updateSize(),this._create(this.config),this._bindEvents(),this.isInitialised=!0,this._adjustColumnsResponsive(),void this.emit("initialised"))}},{key:"updateSize",value:function(e,t){2===arguments.length?(this.width=e,this.height=t):(this.width=this.container.width(),this.height=this.container.height()),!0===this.isInitialised&&(this.root.callDownwards("setSize",[this.width,this.height]),this._maximisedItem&&(this._maximisedItem.element.width(this.container.width()),this._maximisedItem.element.height(this.container.height()),this._maximisedItem.callDownwards("setSize")),this._adjustColumnsResponsive())}},{key:"destroy",value:function(){!1===this.isInitialised||(this._onUnload(),$(window).off("resize",this._resizeFunction),$(window).off("unload beforeunload",this._unloadFunction),this.root.callDownwards("_$destroy",[],!0),this.root.contentItems=[],this.tabDropPlaceholder.remove(),this.dropTargetIndicator.destroy(),this.transitionIndicator.destroy(),this.eventHub.destroy(),this._dragSources.forEach(function(e){e._dragListener.destroy(),e._element=null,e._itemConfig=null,e._dragListener=null}),this._dragSources=[])}},{key:"createContentItem",value:function(e,t){var n;if("string"!=typeof e.type)throw new k.a("Missing parameter 'type'",e);if("react-component"===e.type&&(e.type="component",e.componentName="lm-react-component"),!this._typeToItem[e.type])throw n="Unknown type '"+e.type+"'. Valid types are "+Object(C.j)(this._typeToItem).join(","),new k.a(n);return"component"!==e.type||t instanceof g.a||!t||!0===this.isSubWindow&&t instanceof m.a||(e={type:"stack",width:e.width,height:e.height,content:[e]}),new this._typeToItem[e.type](this,e,t)}},{key:"createPopout",value:function(e,t,n,i){var o,s,r,a,l,c,h=e,u=e instanceof v.a,d=this;if(n=n||null,u){for(h=this.toConfig(e).content,n=Object(C.f)(),a=e.parent,l=e;1===a.contentItems.length&&!a.isRoot;)a=a.parent,l=l.parent;a.addId(n),isNaN(i)&&(i=Object(C.g)(l,a.contentItems))}else h instanceof Array||(h=[h]);return!t&&u&&(o=window.screenX||window.screenLeft,s=window.screenY||window.screenTop,t={left:o+(r=e.element.offset()).left,top:s+r.top,width:e.element.width(),height:e.element.height()}),t||u||(t={left:window.screenX||window.screenLeft+20,top:window.screenY||window.screenTop+20,width:500,height:309}),u&&e.remove(),(c=new _.a(h,t,n,i,this)).on("initialised",function(){d.emit("windowOpened",c)}),c.on("closed",function(){d._$reconcilePopoutWindows()}),this.openPopouts.push(c),c}},{key:"createDragSource",value:function(e,t){this.config.settings.constrainDragToContainer=!1;var n=new b.a($(e),t,this);return this._dragSources.push(n),n}},{key:"selectItem",value:function(e,t){if(!0!==this.config.settings.selectionEnabled)throw new Error("Please set selectionEnabled to true to use this feature");e===this.selectedItem||(null!==this.selectedItem&&this.selectedItem.deselect(),e&&!0!==t&&e.select(),this.selectedItem=e,this.emit("selectionChanged",e))}},{key:"_$maximiseItem",value:function(e){null!==this._maximisedItem&&this._$minimiseItem(this._maximisedItem),this._maximisedItem=e,this._maximisedItem.addId("__glMaximised"),e.element.addClass("lm_maximised"),e.element.after(this._maximisePlaceholder),this.root.element.prepend(e.element),e.element.width(this.container.width()),e.element.height(this.container.height()),e.callDownwards("setSize"),this._maximisedItem.emit("maximised"),this.emit("stateChanged")}},{key:"_$minimiseItem",value:function(e){e.element.removeClass("lm_maximised"),e.removeId("__glMaximised"),this._maximisePlaceholder.after(e.element),this._maximisePlaceholder.remove(),e.parent.callDownwards("setSize"),this._maximisedItem=null,e.emit("minimised"),this.emit("stateChanged")}},{key:"_$closeWindow",value:function(){window.setTimeout(function(){window.close()},1)}},{key:"_$getArea",value:function(e,t){var n,i,o=1/0,s=null;for(n=0;n<this._itemAreas.length;n++)e>(i=this._itemAreas[n]).x1&&e<i.x2&&t>i.y1&&t<i.y2&&o>i.surface&&(o=i.surface,s=i);return s}},{key:"_$createRootItemAreas",value:function(){var e={y2:0,x2:0,y1:"y2",x1:"x2"};for(var t in e){var n=this.root._$getArea();n.side=t,n[t]=e[t]?n[e[t]]-50:50,n.surface=(n.x2-n.x1)*(n.y2-n.y1),this._itemAreas.push(n)}}},{key:"_$calculateItemAreas",value:function(){var e,t,n=this._getAllContentItems();if(this._itemAreas=[],1!==n.length){for(this._$createRootItemAreas(),e=0;e<n.length;e++)if(n[e].isStack){if(null===(t=n[e]._$getArea()))continue;if(t instanceof Array)this._itemAreas=this._itemAreas.concat(t);else{this._itemAreas.push(t);var i={};Object(C.b)(i,t),Object(C.b)(i,t.contentItem._contentAreaDimensions.header.highlightArea),i.surface=(i.x2-i.x1)*(i.y2-i.y1),this._itemAreas.push(i)}}}else this._itemAreas.push(this.root._$getArea())}},{key:"_$normalizeContentItem",value:function(e,t){if(!e)throw new Error("No content item defined");if(Object(C.h)(e)&&(e=e()),e instanceof v.a)return e;if($.isPlainObject(e)&&e.type){var n=this.createContentItem(e,t);return n.callDownwards("_$init"),n}throw new Error("Invalid contentItem")}},{key:"_$reconcilePopoutWindows",value:function(){var e,t=[];for(e=0;e<this.openPopouts.length;e++)!1===this.openPopouts[e].getWindow().closed?t.push(this.openPopouts[e]):this.emit("windowClosed",this.openPopouts[e]);this.openPopouts.length!==t.length&&(this.emit("stateChanged"),this.openPopouts=t)}},{key:"_getAllContentItems",value:function(){var e=[];return function t(n){if(e.push(n),n.contentItems instanceof Array)for(var i=0;i<n.contentItems.length;i++)t(n.contentItems[i])}(this.root),e}},{key:"_bindEvents",value:function(){this._isFullPage&&$(window).resize(this._resizeFunction),$(window).on("unload beforeunload",this._unloadFunction)}},{key:"_onResize",value:function(){clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout(Object(C.c)(this.updateSize,this),100)}},{key:"_createConfig",value:function(e){var t=Object(C.d)("gl-window");t&&(this.isSubWindow=!0,e=localStorage.getItem(t),e=JSON.parse(e),e=(new d.a).unminifyConfig(e),localStorage.removeItem(t));return function e(t){for(var n in t)"props"!=n&&"object"==r(t[n])?e(t[n]):"type"==n&&"react-component"===t[n]&&(t.type="component",t.componentName="lm-react-component")}(e=$.extend(!0,{},I.a,e)),!1===e.settings.hasHeaders&&(e.dimensions.headerHeight=0),e}},{key:"_adjustToWindowMode",value:function(){var e=$('<div class="lm_popin" title="'+this.config.labels.popin+'"><div class="lm_icon"></div><div class="lm_bg"></div></div>');e.click(Object(C.c)(function(){this.emit("popIn")},this)),document.title=Object(C.k)(this.config.content[0].title),$("head").append($("body link, body style, template, .gl_keep")),this.container=$("body").html("").css("visibility","visible").append(e),document.body.offsetHeight,window.__glInstance=this}},{key:"_createSubWindows",value:function(){var e,t;for(e=0;e<this.config.openPopouts.length;e++)t=this.config.openPopouts[e],this.createPopout(t.content,t.dimensions,t.parentId,t.indexInParent)}},{key:"_setContainer",value:function(){var e=$(this.container||"body");if(0===e.length)throw new Error("GoldenLayout container not found");if(1<e.length)throw new Error("GoldenLayout more than one container element specified");e[0]===document.body&&(this._isFullPage=!0,$("html, body").css({height:"100%",margin:0,padding:0,overflow:"hidden"})),this.container=e}},{key:"_create",value:function(e){var t;if(!(e.content instanceof Array))throw t=void 0===e.content?"Missing setting 'content' on top level of configuration":"Configuration parameter 'content' must be an array",new k.a(t,e);if(1<e.content.length)throw t="Top level content can't contain more then one element.",new k.a(t,e);this.root=new m.a(this,{content:e.content},this.container),this.root.callDownwards("_$init"),"__glMaximised"===e.maximisedItemId&&this.root.getItemsById(e.maximisedItemId)[0].toggleMaximise()}},{key:"_onUnload",value:function(){if(!0===this.config.settings.closePopoutsOnUnload)for(var e=0;e<this.openPopouts.length;e++)this.openPopouts[e].close()}},{key:"_adjustColumnsResponsive",value:function(){if(this._useResponsiveLayout()&&!this._updatingColumnsResponsive&&this.config.dimensions&&this.config.dimensions.minItemWidth&&0!==this.root.contentItems.length&&this.root.contentItems[0].isRow){this._firstLoad=!1;var e=this.root.contentItems[0].contentItems.length;if(!(1>=e)){var i=this.config.dimensions.minItemWidth;if(!(e*i<=this.width)){this._updatingColumnsResponsive=!0;for(var o,s=n(t(this.width/i),1),r=this.root.contentItems[0],a=this._findAllStackContainers()[0],l=0;l<e-s;l++)o=r.contentItems[r.contentItems.length-1],this._addChildContentItemsToContainer(a,o);this._updatingColumnsResponsive=!1}}}else this._firstLoad=!1}},{key:"_useResponsiveLayout",value:function(){return this.config.settings&&("always"==this.config.settings.responsiveMode||"onload"==this.config.settings.responsiveMode&&this._firstLoad)}},{key:"_addChildContentItemsToContainer",value:function(e,t){"stack"===t.type?t.contentItems.forEach(function(n){e.addChild(n),t.removeChild(n,!0)}):t.contentItems.forEach(Object(C.c)(function(t){this._addChildContentItemsToContainer(e,t)},this))}},{key:"_findAllStackContainers",value:function(){var e=[];return this._findAllStackContainersRecursive(e,this.root),e}},{key:"_findAllStackContainersRecursive",value:function(e,t){t.contentItems.forEach(Object(C.c)(function(t){"stack"==t.type?e.push(t):!t.isComponent&&this._findAllStackContainersRecursive(e,t)},this))}}]),i}();i.a=S},function(e,t,n){e.exports={default:n(41),__esModule:!0}},function(e,t,n){n(42),e.exports=n(2).Object.keys},function(e,t,n){var i=n(43),o=n(15);n(53)("keys",function(){return function(e){return o(i(e))}})},function(e,t,n){var i=n(14);e.exports=function(e){return Object(i(e))}},function(e,t,n){var i=n(16),o=n(17),s=n(47)(!1),r=n(19)("IE_PROTO");e.exports=function(e,t){var n,a=o(e),l=0,c=[];for(n in a)n!=r&&i(a,n)&&c.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~s(c,n)||c.push(n));return c}},function(e,t,n){var i=n(46);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,t,n){var i=n(17),o=n(48),s=n(49);e.exports=function(e){return function(t,n,r){var a,l=i(t),c=o(l.length),h=s(r,c);if(e&&n!=n){for(;c>h;)if((a=l[h++])!=a)return!0}else for(;c>h;h++)if((e||h in l)&&l[h]===n)return e||h||0;return!e&&-1}}},function(t,n,i){var o=i(18);t.exports=function(t){return 0<t?e(o(t),9007199254740991):0}},function(t,i,o){var s=o(18);t.exports=function(t,i){return 0>(t=s(t))?n(t+i,0):e(t,i)}},function(e,t,n){var i=n(2),o=n(4),s="__core-js_shared__",r=o[s]||(o[s]={});(e.exports=function(e,t){return r[e]||(r[e]=void 0===t?{}:t)})("versions",[]).push({version:i.version,mode:n(51)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(e){e.exports=!0},function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+n).toString(36))}},function(e,t,n){var i=n(21),o=n(2),s=n(10);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],r={};r[e]=t(n),i(i.S+i.F*s(function(){n(1)}),"Object",r)}},function(e,t,n){var i=n(55);e.exports=function(e,t,n){return i(e),void 0===t?e:1===n?function(n){return e.call(t,n)}:2===n?function(n,i){return e.call(t,n,i)}:3===n?function(n,i,o){return e.call(t,n,i,o)}:function(){return e.apply(t,arguments)}}},function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var i=n(22),o=n(59);e.exports=n(5)?function(e,t,n){return i.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){e.exports=!n(5)&&!n(10)(function(){return 7!=Object.defineProperty(n(23)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var i=n(9);e.exports=function(e,t){if(!i(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!i(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!i(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!i(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports={default:n(61),__esModule:!0}},function(e,t,n){n(62);var i=n(2).Object;e.exports=function(e,t){return i.create(e,t)}},function(e,t,n){var i=n(21);i(i.S,"Object",{create:n(63)})},function(e,t,n){var i=n(8),o=n(64),s=n(20),r=n(19)("IE_PROTO"),a=function(){},l="prototype",c=function(){var e,t=n(23)("iframe"),i=s.length;for(t.style.display="none",n(65).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),c=e.F;i--;)delete c[l][s[i]];return c()};e.exports=Object.create||function(e,t){var n;return null===e?n=c():(a[l]=i(e),n=new a,a[l]=null,n[r]=e),void 0===t?n:o(n,t)}},function(e,t,n){var i=n(22),o=n(8),s=n(15);e.exports=n(5)?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},function(e,t,n){var i=n(4).document;e.exports=i&&i.documentElement},function(e,t){t.a={isClosable:!0,reorderEnabled:!0,title:""}},function(e,t,n){var i=n(7);t.a=function(){function e(t,n,o){c(this,e),this._isVertical=t,this._size=n,this._grabSize=o<n?n:o,this.element=this._createElement(),this._dragListener=new i.a(this.element)}return s(e,[{key:"on",value:function(e,t,n){this._dragListener.on(e,t,n)}},{key:"_$destroy",value:function(){this.element.remove()}},{key:"_createElement",value:function(){var e=$('<div class="lm_drag_handle"></div>'),t=$('<div class="lm_splitter"></div>');t.append(e);var n=this._grabSize-this._size,i=n/2;return this._isVertical?(e.css("top",-i),e.css("height",this._size+n),t.addClass("lm_vertical"),t.height(this._size)):(e.css("left",-i),e.css("width",this._size+n),t.addClass("lm_horizontal"),t.width(this._size)),t}}]),e}()},function(e,t,n){e.exports={default:n(69),__esModule:!0}},function(e,t,n){var i=n(2),o=i.JSON||(i.JSON={stringify:JSON.stringify});e.exports=function(){return o.stringify.apply(o,arguments)}},function(e,t,n){var i=n(7),o=n(30),r=n(0);t.a=function(){function e(t,n,i){c(this,e),this._element=t,this._itemConfig=n,this._layoutManager=i,this._dragListener=null,this._createDragListener()}return s(e,[{key:"_createDragListener",value:function(){null!==this._dragListener&&this._dragListener.destroy(),this._dragListener=new i.a(this._element),this._dragListener.on("dragStart",this._onDragStart,this),this._dragListener.on("dragStop",this._createDragListener,this)}},{key:"_onDragStart",value:function(e,t){var n=this._itemConfig;Object(r.h)(n)&&(n=n());var i=this._layoutManager._$normalizeContentItem($.extend(!0,{},n)),s=new o.a(e,t,this._dragListener,this._layoutManager,i,null);this._layoutManager.transitionIndicator.transitionElements(this._element,s.element)}}]),e}()},function(e,t){t.a=function(){function e(){c(this,e),this.element=$('<div class="lm_dropTargetIndicator"><div class="lm_inner"></div></div>'),$(document.body).append(this.element)}return s(e,[{key:"destroy",value:function(){this.element.remove()}},{key:"highlight",value:function(e,t,n,i){this.highlightArea({x1:e,y1:t,x2:n,y2:i})}},{key:"highlightArea",value:function(e){this.element.css({left:e.x1,top:e.y1,width:e.x2-e.x1,height:e.y2-e.y1}).show()}},{key:"hide",value:function(){this.element.hide()}}]),e}()},function(e,t,n){var i=n(0);t.a=function(){function e(){c(this,e),this._element=$('<div class="lm_transition_indicator"></div>'),$(document.body).append(this._element),this._toElement=null,this._fromDimensions=null,this._totalAnimationDuration=200,this._animationStartTime=null}return s(e,[{key:"destroy",value:function(){this._element.remove()}},{key:"transitionElements",value:function(){}},{key:"_nextAnimationFrame",value:function(){var e,t=this._measure(this._toElement),n=(Object(i.i)()-this._animationStartTime)/this._totalAnimationDuration,o={};if(1<=n)this._element.hide();else{for(e in t.opacity=0,this._fromDimensions)o[e]=this._fromDimensions[e]+(t[e]-this._fromDimensions[e])*n;this._element.css(o),Object(i.a)(Object(i.c)(this._nextAnimationFrame,this))}}},{key:"_measure",value:function(e){var t=e.offset();return{left:t.left,top:t.top,width:e.outerWidth(),height:e.outerHeight()}}}]),e}()},function(e,t){t.a={openPopouts:[],settings:{hasHeaders:!0,constrainDragToContainer:!0,reorderEnabled:!0,selectionEnabled:!1,popoutWholeStack:!1,blockedPopoutsThrowError:!0,closePopoutsOnUnload:!0,showPopoutIcon:!0,showMaximiseIcon:!0,showCloseIcon:!0,responsiveMode:"onload",tabOverlapAllowance:0,reorderOnTabMenuClick:!0,tabControlOffset:10},dimensions:{borderWidth:5,borderGrabWidth:15,minItemHeight:10,minItemWidth:10,headerHeight:20,dragProxyWidth:300,dragProxyHeight:200},labels:{close:"close",maximise:"maximise",minimise:"minimise",popout:"open in new window",popin:"pop in",tabDropdown:"additional tabs"}}},function(e,t,n){n(75)(n(76))},function(e){e.exports=function(e){function t(e){"undefined"!=typeof console&&(console.error||console.log)("[Script Loader]",e)}try{"undefined"!=typeof execScript&&"undefined"!=typeof attachEvent&&"undefined"==typeof addEventListener?execScript(e):"undefined"==typeof eval?t("EvalError: No eval function available"):eval.call(null,e)}catch(e){t(e)}}},function(e){e.exports="/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\n(function(global, factory) {\n if (typeof define === 'function' && define.amd)\n define(function() { return factory(global) })\n else\n factory(global)\n}(this, function(window) {\n var Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = 'success'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!('type' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on('load error', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort('timeout')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0]\n return mime && ( mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\n }\n\n function appendQuery(url, query) {\n if (query == '') return url\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = 'jsonp'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n ))\n settings.url = appendQuery(settings.url, '_=' + Date.now())\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\n setHeader('Accept', mime || '*/*')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == 'script') (1,eval)(result)\n else if (dataType == 'xml') result = xhr.responseXML\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, 'abort', xhr, settings, deferred)\n return xhr\n }\n\n var async = 'async' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, 'timeout', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = 'POST'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = 'json'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $('<div>').html(response.replace(rscript, \"\")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == \"array\" || (!traditional && type == \"object\"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = \"\"\n this.push(escape(key) + '=' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join('&').replace(/%20/g, '+')\n }\n})(Zepto)\n\n;(function($){\n $.fn.serializeArray = function() {\n var name, type, result = [],\n add = function(value) {\n if (value.forEach) return value.forEach(add)\n result.push({ name: name, value: value })\n }\n if (this[0]) $.each(this[0].elements, function(_, field){\n type = field.type, name = field.name\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\n ((type != 'radio' && type != 'checkbox') || field.checked))\n add($(field).val())\n })\n return result\n }\n\n $.fn.serialize = function(){\n var result = []\n this.serializeArray().forEach(function(elm){\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value))\n })\n return result.join('&')\n }\n\n $.fn.submit = function(callback) {\n if (0 in arguments) this.bind('submit', callback)\n else if (this.length) {\n var event = $.Event('submit')\n this.eq(0).trigger(event)\n if (!event.isDefaultPrevented()) this.get(0).submit()\n }\n return this\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n return Zepto\n}))\n"},function(){!function(e){e.expr={":":{}},e.support={},e.fn.clone=function(){var t=e();return this.each(function(){t.push(this.cloneNode(!0))}),t},["Left","Top"].forEach(function(t,n){function i(e){return function(e){return e&&"object"==(void 0===e?"undefined":r(e))&&"setInterval"in e}(e)?e:!(9!==e.nodeType)&&(e.defaultView||e.parentWindow)}var o="scroll"+t;e.fn[o]=function(t){var s,r;return void 0===t?(s=this[0])?(r=i(s))?"pageXOffset"in r?r[n?"pageYOffset":"pageXOffset"]:r.document.documentElement[o]||r.document.body[o]:s[o]:null:void this.each(function(){if(r=i(this)){var s=n?e(r).scrollLeft():t,a=n?t:e(r).scrollTop();r.scrollTo(s,a)}else this[o]=t})}}),["width","height"].forEach(function(t){var n=t.replace(/./,function(e){return e[0].toUpperCase()});e.fn["inner"+n]=function(e){var n=this;if(n){var i=n[t]();return{width:["left","right"],height:["top","bottom"]}[t].forEach(function(t){i+=parseInt(n.css("padding-"+t),10),e&&(i+=parseInt(n.css("margin-"+t),10))}),i}return null},e.fn["outer"+n]=function(e){var n=this;if(n){var i=n[t]();return{width:["left","right"],height:["top","bottom"]}[t].forEach(function(t){e&&(i+=parseInt(n.css("margin-"+t),10))}),i}return null}}),e.proxy=function(t,n){if("string"==typeof n){var i=t[n];n=t,t=i}if(e.isFunction(t)){var o=Array.prototype.slice.call(arguments,2),s=function(){return t.apply(n,o.concat(Array.prototype.slice.call(arguments)))};return s.guid=t.guid=t.guid||s.guid||e.guid++,s}};var t=String.prototype.trim;e.trim=function(e,n){return!n&&t?t.call(e):(n=defaultToWhiteSpace(n),e.replace(new RegExp("^["+n+"]+|["+n+"]+$","g"),""))};var n=/^(?:body|html)$/i;e.fn.position=function(){if(!this[0])return null;var t=this[0],i=this.offsetParent(),o=this.offset(),s=n.test(i[0].nodeName)?{top:0,left:0}:i.offset();return o.top-=parseFloat(e(t).css("margin-top"))||0,o.left-=parseFloat(e(t).css("margin-left"))||0,s.top+=parseFloat(e(i[0]).css("border-top-width"))||0,s.left+=parseFloat(e(i[0]).css("border-left-width"))||0,{top:o.top-s.top,left:o.left-s.left}},e.fn.offsetParent=function(){var t=e();return this.each(function(){for(var i=this.offsetParent||document.body;i&&!n.test(i.nodeName)&&"static"===e(i).css("position");)i=i.offsetParent;t.push(i)}),t}}(Zepto)}])})}).call(this,n(2)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}}]); +!function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";var i=new(function(e){return e&&e.__esModule?e:{default:e}}(n(1)).default)({settings:{showPopoutIcon:!1,showCloseIcon:!1},dimensions:{minItemHeight:40},content:[{type:"row",content:[{type:"column",width:40,content:[{type:"component",componentName:"template",title:"Game",componentState:{id:"client_wrapper"}}]},{type:"column",content:[{type:"row",height:65,content:[{type:"stack",content:[{type:"component",title:"Main",componentName:"template",componentState:{id:"mainmenu"}},{type:"component",title:"Log",componentName:"template",componentState:{id:"log"}}]},{type:"component",title:"Music",width:30,componentName:"template",componentState:{id:"music"}}]},{type:"row",content:[{type:"component",title:"Server chat",componentName:"template",componentState:{id:"ooc"}}]}]}]}]});i.registerComponent("template",function(e,t){var n=document.querySelector("#"+t.id);e.getElement().html(n.content)}),i.init()},function(e,t,n){"use strict";(function(e){var n,i,o,s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}!function(s,a){"object"==r(t)&&"object"==r(e)?e.exports=a():(i=[],void 0===(o="function"==typeof(n=a)?n.apply(t,i):n)||(e.exports=o))}("undefined"==typeof self||self,function(){var e=Math.min,t=Math.floor,n=Math.max;return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=35)}([function(e,t,n){t.e=function(e){return $.zepto?e.touches?e.targetTouches[0]:e:e.originalEvent&&e.originalEvent.touches?e.originalEvent.touches[0]:e},t.j=function(e){var t,n;if("function"==typeof o.a)return o()(e);for(n in t=[],e)t.push(n);return t},t.d=function(e){if(window.location.hash)return function(e){var t=location.hash.match(new RegExp(e+"=([^&]*)"));return t?t[1]:null}(e);if(!window.location.search)return null;var t,n,i=window.location.search.substr(1).split("&"),o={};for(n=0;n<i.length;n++)o[(t=i[n].split("="))[0]]=t[1];return o[e]||null},t.b=function(e,t){for(var n in t)e[n]=t[n];return e},t.a=function(e){return(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)})(function(){e()})},t.g=function(e,t){if(!(t instanceof Array))throw new Error("Haystack is not an Array");if(t.indexOf)return t.indexOf(e);for(var n=0;n<t.length;n++)if(t[n]===e)return n;return-1},n.d(t,"h",function(){return a}),t.c=function(e,t,n){if(void 0!==Function.prototype.bind)return Function.prototype.bind.apply(e,[t].concat(n||[]));var i=function i(){var o=(n||[]).concat(Array.prototype.slice.call(arguments,0));return this instanceof i?void e.apply(this,o):e.apply(t,o)};return i.prototype=e.prototype,i},t.i=function(){return"function"==typeof Date.now?Date.now():(new Date).getTime()},t.f=function(){return(1e15*Math.random()).toString(36).replace(".","")},t.k=function(e){return $.trim(e.replace(/(<([^>]+)>)/gi,""))};var i=n(40),o=n.n(i),s=n(60),a=(n.n(s),"function"!=typeof/./&&"object"!=("undefined"==typeof Int8Array?"undefined":r(Int8Array))?function(e){return"function"==typeof e||!1}:function(e){return"[object Function]"===toString.call(e)})},function(e,t,n){var i=n(0),o="__all";t.a=o,t.b=function(){return function e(){c(this,e),this._mSubscriptions={},this._mSubscriptions[o]=[],this.on=function(e,t,n){if(!Object(i.h)(t))throw new Error("Tried to listen to event "+e+" with non-function callback "+t);this._mSubscriptions[e]||(this._mSubscriptions[e]=[]),this._mSubscriptions[e].push({fn:t,ctx:n})},this.emit=function(e){var t,n,i;i=Array.prototype.slice.call(arguments,1);var s=this._mSubscriptions[e];if(s)for(s=s.slice(),t=0;t<s.length;t++)n=s[t].ctx||{},s[t].fn.apply(n,i);i.unshift(e);var r=this._mSubscriptions[o].slice();for(t=0;t<r.length;t++)n=r[t].ctx||{},r[t].fn.apply(n,i)},this.unbind=function(e,t,n){if(!this._mSubscriptions[e])throw new Error("No subscribtions to unsubscribe for event "+e);var i,o=!1;for(i=0;i<this._mSubscriptions[e].length;i++)t&&this._mSubscriptions[e][i].fn!==t||n&&n!==this._mSubscriptions[e][i].ctx||(this._mSubscriptions[e].splice(i,1),o=!0);if(0==o)throw new Error("Nothing to unbind for "+e)},this.off=this.unbind,this.trigger=this.emit}}()},function(e){var t=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=t)},function(e,t,n){var i=n(1),o=n(26),r=n(12),h=n(27),u=n(66),d=n(0),f=function(e){function t(e,n,o){var s;return c(this,t),(s=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this))).config=s._extendItemNode(n),s.type=n.type,s.contentItems=[],s.parent=o,s.isInitialised=!1,s.isMaximised=!1,s.isRoot=!1,s.isRow=!1,s.isColumn=!1,s.isStack=!1,s.isComponent=!1,s.layoutManager=e,s._pendingEventPropagations={},s._throttledEvents=["stateChanged"],s.on(i.a,s._propagateEvent,s),n.content&&s._createContentItems(n),s}return l(t,i.b),s(t,[{key:"setSize",value:function(){throw new Error("Abstract Method")}},{key:"callDownwards",value:function(e,t,n,i){var o;for(!0!==n&&!0!==i&&this[e].apply(this,t||[]),o=0;o<this.contentItems.length;o++)this.contentItems[o].callDownwards(e,t,n);!0===n&&!0!==i&&this[e].apply(this,t||[])}},{key:"removeChild",value:function(e,t){var n=Object(d.g)(e,this.contentItems);if(-1===n)throw new Error("Can't remove child item. Unknown content item");!0!==t&&this.contentItems[n]._$destroy(),this.contentItems.splice(n,1),this.config.content.splice(n,1),0<this.contentItems.length?this.callDownwards("setSize"):!(this instanceof r.a)&&!0===this.config.isClosable&&this.parent.removeChild(this)}},{key:"undisplayChild",value:function(e){if(-1===Object(d.g)(e,this.contentItems))throw new Error("Can't remove child item. Unknown content item");this instanceof r.a||!0!==this.config.isClosable||this.parent.undisplayChild(this)}},{key:"addChild",value:function(e,t){void 0===t&&(t=this.contentItems.length),this.contentItems.splice(t,0,e),void 0===this.config.content&&(this.config.content=[]),this.config.content.splice(t,0,e.config),e.parent=this,!0===e.parent.isInitialised&&!1===e.isInitialised&&e._$init()}},{key:"replaceChild",value:function(e,t,n){t=this.layoutManager._$normalizeContentItem(t);var i=Object(d.g)(e,this.contentItems),o=e.element[0].parentNode;if(-1===i)throw new Error("Can't replace child. oldChild is not child of this");o.replaceChild(t.element[0],e.element[0]),!0===n&&(e.parent=null,e._$destroy()),this.contentItems[i]=t,t.parent=this,this.isStack&&(this.header.tabs[i].contentItem=t),!0===t.parent.isInitialised&&!1===t.isInitialised&&t._$init(),this.callDownwards("setSize")}},{key:"remove",value:function(){this.parent.removeChild(this)}},{key:"popout",value:function(){var e=this.layoutManager.createPopout(this);return this.emitBubblingEvent("stateChanged"),e}},{key:"toggleMaximise",value:function(e){e&&e.preventDefault(),!0===this.isMaximised?this.layoutManager._$minimiseItem(this):this.layoutManager._$maximiseItem(this),this.isMaximised=!this.isMaximised,this.emitBubblingEvent("stateChanged")}},{key:"select",value:function(){this.layoutManager.selectedItem!==this&&(this.layoutManager.selectItem(this,!0),this.element.addClass("lm_selected"))}},{key:"deselect",value:function(){this.layoutManager.selectedItem===this&&(this.layoutManager.selectedItem=null,this.element.removeClass("lm_selected"))}},{key:"setTitle",value:function(e){this.config.title=e,this.emit("titleChanged",e),this.emit("stateChanged")}},{key:"hasId",value:function(e){return!!this.config.id&&("string"==typeof this.config.id?this.config.id===e:this.config.id instanceof Array?-1!==Object(d.g)(e,this.config.id):void 0)}},{key:"addId",value:function(e){this.hasId(e)||(this.config.id?"string"==typeof this.config.id?this.config.id=[this.config.id,e]:this.config.id instanceof Array&&this.config.id.push(e):this.config.id=e)}},{key:"removeId",value:function(e){if(!this.hasId(e))throw new Error("Id not found");if("string"==typeof this.config.id)delete this.config.id;else if(this.config.id instanceof Array){var t=Object(d.g)(e,this.config.id);this.config.id.splice(t,1)}}},{key:"getItemsByFilter",value:function(e){var t=[];return function n(i){for(var o=0;o<i.contentItems.length;o++)!0===e(i.contentItems[o])&&t.push(i.contentItems[o]),n(i.contentItems[o])}(this),t}},{key:"getItemsById",value:function(e){return this.getItemsByFilter(function(t){return t.config.id instanceof Array?-1!==Object(d.g)(e,t.config.id):t.config.id===e})}},{key:"getItemsByType",value:function(e){return this._$getItemsByProperty("type",e)}},{key:"getComponentsByName",value:function(e){var t,n=this._$getItemsByProperty("componentName",e),i=[];for(t=0;t<n.length;t++)i.push(n[t].instance);return i}},{key:"_$getItemsByProperty",value:function(e,t){return this.getItemsByFilter(function(n){return n[e]===t})}},{key:"_$setParent",value:function(e){this.parent=e}},{key:"_$highlightDropZone",value:function(e,t,n){this.layoutManager.dropTargetIndicator.highlightArea(n)}},{key:"_$onDrop",value:function(e){this.addChild(e)}},{key:"_$hide",value:function(){this._callOnActiveComponents("hide"),this.element.hide(),this.layoutManager.updateSize()}},{key:"_$show",value:function(){this._callOnActiveComponents("show"),this.element.show(),this.layoutManager.updateSize()}},{key:"_callOnActiveComponents",value:function(e){var t,n,i=this.getItemsByType("stack");for(n=0;n<i.length;n++)(t=i[n].getActiveContentItem())&&t.isComponent&&t.container[e]()}},{key:"_$destroy",value:function(){this.emitBubblingEvent("beforeItemDestroyed"),this.callDownwards("_$destroy",[],!0,!0),this.element.remove(),this.emitBubblingEvent("itemDestroyed")}},{key:"_$getArea",value:function(e){var t=(e=e||this.element).offset(),n=e.width(),i=e.height();return{x1:t.left,y1:t.top,x2:t.left+n,y2:t.top+i,surface:n*i,contentItem:this}}},{key:"_$init",value:function(){var e;for(this.setSize(),e=0;e<this.contentItems.length;e++)this.childElementContainer.append(this.contentItems[e].element);this.isInitialised=!0,this.emitBubblingEvent("itemCreated"),this.emitBubblingEvent(this.type+"Created")}},{key:"emitBubblingEvent",value:function(e){var t=new o.a(e,this);this.emit(e,t)}},{key:"_createContentItems",value:function(e){var t,n;if(!(e.content instanceof Array))throw new h.a("content must be an Array",e);for(n=0;n<e.content.length;n++)t=this.layoutManager.createContentItem(e.content[n],this),this.contentItems.push(t)}},{key:"_extendItemNode",value:function(e){for(var t in u.a)void 0===e[t]&&(e[t]=u.a[t]);return e}},{key:"_propagateEvent",value:function(e,t){t instanceof o.a&&!1===t.isPropagationStopped&&!0===this.isInitialised&&(!1===this.isRoot&&this.parent?this.parent.emit.apply(this.parent,Array.prototype.slice.call(arguments,0)):this._scheduleEventPropagationToLayoutManager(e,t))}},{key:"_scheduleEventPropagationToLayoutManager",value:function(e,t){-1===Object(d.g)(e,this._throttledEvents)?this.layoutManager.emit(e,t.origin):!0!==this._pendingEventPropagations[e]&&(this._pendingEventPropagations[e]=!0,Object(d.a)(Object(d.c)(this._propagateEventToLayoutManager,this,[e,t])))}},{key:"_propagateEventToLayoutManager",value:function(e,t){this._pendingEventPropagations[e]=!1,this.layoutManager.emit(e,t)}}]),t}();t.a=f},function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},function(e,t,n){e.exports=!n(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,i,o){var r=Math.round,h=o(3),u=o(13),d=o(67),f=o(0),m=function(e){function i(e,t,n,o){var s;return c(this,i),(s=a(this,(i.__proto__||Object.getPrototypeOf(i)).call(this,t,n,o))).isRow=!e,s.isColumn=e,s.element=$('<div class="lm_item lm_'+(e?"column":"row")+'"></div>'),s.childElementContainer=s.element,s._splitterSize=t.config.dimensions.borderWidth,s._splitterGrabSize=t.config.dimensions.borderGrabWidth,s._isColumn=e,s._dimension=e?"height":"width",s._splitter=[],s._splitterPosition=null,s._splitterMinPosition=null,s._splitterMaxPosition=null,s}return l(i,h.a),s(i,[{key:"addChild",value:function(e,t,i){var o,s,r,a;if(e=this.layoutManager._$normalizeContentItem(e,this),void 0===t&&(t=this.contentItems.length),0<this.contentItems.length?(a=this._createSplitter(n(0,t-1)).element,0<t?(this.contentItems[t-1].element.after(a),a.after(e.element),this._isDocked(t-1)&&(this._splitter[t-1].element.hide(),this._splitter[t].element.show())):(this.contentItems[0].element.before(a),a.before(e.element))):this.childElementContainer.append(e.element),h.a.prototype.addChild.call(this,e,t),o=1/this.contentItems.length*100,!0!==i){for(r=0;r<this.contentItems.length;r++)this.contentItems[r]===e?e.config[this._dimension]=o:(s=this.contentItems[r].config[this._dimension]*=(100-o)/100,this.contentItems[r].config[this._dimension]=s);this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking()}else this.emitBubblingEvent("stateChanged")}},{key:"undisplayChild",value:function(e){var t,i=e.config[this._dimension],o=Object(f.g)(e,this.contentItems),s=n(o-1,0);if(-1===o)throw new Error("Can't undisplay child. ContentItem is not child of this Row or Column");this._splitter[s]&&this._splitter[s].element.hide(),s<this._splitter.length&&this._isDocked(s)&&this._splitter[s].element.hide();var r=this._isDocked();for(t=0;t<this.contentItems.length;t++)this.contentItems[t]===e?this.contentItems[t].config[this._dimension]=0:this._isDocked(t)||(this.contentItems[t].config[this._dimension]+=i/(this.contentItems.length-1-r));1===this.contentItems.length&&h.a.prototype.undisplayChild.call(this,e),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"removeChild",value:function(e,t){var i,o,s=e.config[this._dimension],r=Object(f.g)(e,this.contentItems),a=n(r-1,0);if(-1===r)throw new Error("Can't remove child. ContentItem is not child of this Row or Column");this._splitter[a]&&(this._splitter[a]._$destroy(),this._splitter.splice(a,1)),a<this._splitter.length&&this._isDocked(a)&&this._splitter[a].element.hide();var l=this._isDocked();for(i=0;i<this.contentItems.length;i++)this.contentItems[i]!==e&&(this._isDocked(i)||(this.contentItems[i].config[this._dimension]+=s/(this.contentItems.length-1-l)));h.a.prototype.removeChild.call(this,e,t),1===this.contentItems.length&&!0===this.config.isClosable?(o=this.contentItems[0],this.contentItems=[],this.parent.replaceChild(this,o,!0),this._validateDocking(this.parent)):(this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking())}},{key:"replaceChild",value:function(e,t){var n=e.config[this._dimension];h.a.prototype.replaceChild.call(this,e,t),t.config[this._dimension]=n,this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"setSize",value:function(){0<this.contentItems.length&&(this._calculateRelativeSizes(),this._setAbsoluteSizes()),this.emitBubblingEvent("stateChanged"),this.emit("resize")}},{key:"dock",value:function(e,t,i){if(1===this.contentItems.length)throw new Error("Can't dock child when it single");var o=e.config[this._dimension],s=this.layoutManager.config.dimensions.headerHeight,r=Object(f.g)(e,this.contentItems),a=n(r-1,0);if(-1===r)throw new Error("Can't dock child. ContentItem is not child of this Row or Column");var l,c=e._docker&&e._docker.docked;if(void 0===t||t!=c){if(c){for(this._splitter[a].element.show(),l=0;l<this.contentItems.length;l++){var h=e._docker.size;this.contentItems[l]===e?e.config[this._dimension]=h:(itemSize=this.contentItems[l].config[this._dimension]*=(100-h)/100,this.contentItems[l].config[this._dimension]=itemSize)}e._docker={docked:!1}}else{if(2>this.contentItems.length-this._isDocked())throw new Error("Can't dock child when it is last in "+this.config.type);var u={column:{first:"top",last:"bottom"},row:{first:"left",last:"right"}}[this.config.type][r?"last":"first"];e.header.position()!=u&&e.header.position(u),this._splitter[a]&&this._splitter[a].element.hide();var d=this._isDocked();for(l=0;l<this.contentItems.length;l++)this.contentItems[l]===e?this.contentItems[l].config[this._dimension]=0:this._isDocked(l)||(this.contentItems[l].config[this._dimension]+=o/(this.contentItems.length-1-d));e._docker={dimension:this._dimension,size:o,realSize:e.element[this._dimension]()-s,docked:!0},i&&e.childElementContainer[this._dimension](0)}e.element.toggleClass("lm_docked",e._docker.docked),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking()}}},{key:"_$init",value:function(){if(!0!==this.isInitialised){var e;for(h.a.prototype._$init.call(this),e=0;e<this.contentItems.length-1;e++)this.contentItems[e].element.after(this._createSplitter(e).element);for(e=0;e<this.contentItems.length;e++)this.contentItems[e]._header&&this.contentItems[e]._header.docked&&this.dock(this.contentItems[e],!0,!0)}}},{key:"_setAbsoluteSizes",value:function(){var e,t=this._calculateAbsoluteSizes();for(e=0;e<this.contentItems.length;e++)0<t.additionalPixel-e&&t.itemSizes[e]++,this._isColumn?(this.contentItems[e].element.width(t.totalWidth),this.contentItems[e].element.height(t.itemSizes[e])):(this.contentItems[e].element.width(t.itemSizes[e]),this.contentItems[e].element.height(t.totalHeight))}},{key:"_calculateAbsoluteSizes",value:function(){var e,n,i=(this.contentItems.length-1)*this._splitterSize,o=this.layoutManager.config.dimensions.headerHeight,s=this.element.width(),r=this.element.height(),a=0,l=[];for(this._isColumn?r-=i:s-=i,e=0;e<this.contentItems.length;e++)this._isDocked(e)&&(this._isColumn?r-=o-this._splitterSize:s-=o-this._splitterSize);for(e=0;e<this.contentItems.length;e++)n=this._isColumn?t(r*(this.contentItems[e].config.height/100)):t(s*(this.contentItems[e].config.width/100)),this._isDocked(e)&&(n=o),a+=n,l.push(n);return{itemSizes:l,additionalPixel:t((this._isColumn?r:s)-a),totalWidth:s,totalHeight:r}}},{key:"_calculateRelativeSizes",value:function(){var e,t=0,n=[],i=this._isColumn?"height":"width";for(e=0;e<this.contentItems.length;e++)void 0===this.contentItems[e].config[i]?n.push(this.contentItems[e]):t+=this.contentItems[e].config[i];if(100!==r(t))if(100>r(t)&&0<n.length){for(e=0;e<n.length;e++)n[e].config[i]=(100-t)/n.length;this._respectMinItemWidth()}else{if(100<r(t))for(e=0;e<n.length;e++)n[e].config[i]=50,t+=50;for(e=0;e<this.contentItems.length;e++)this.contentItems[e].config[i]=this.contentItems[e].config[i]/t*100;this._respectMinItemWidth()}else this._respectMinItemWidth()}},{key:"_respectMinItemWidth",value:function(){var e,t,n,i=this.layoutManager.config.dimensions&&this.layoutManager.config.dimensions.minItemWidth||0,o=null,s=[],a=0,l=0,c=0,h=0,u=[];if(!(this._isColumn||!i||1>=this.contentItems.length)){o=this._calculateAbsoluteSizes();for(var d=0;d<this.contentItems.length;d++)this.contentItems[d],(h=o.itemSizes[d])<i?(l+=i-h,n={width:i}):(a+=h-i,n={width:h},s.push(n)),u.push(n);if(!(0==l||l>a)){for(e=l/a,c=l,d=0;d<s.length;d++)n=s[d],c-=t=r((n.width-i)*e),n.width-=t;for(0!==c&&(u[u.length-1].width-=c),d=0;d<this.contentItems.length;d++)this.contentItems[d].config.width=u[d].width/o.totalWidth*100}}}},{key:"_createSplitter",value:function(e){var t;return(t=new d.a(this._isColumn,this._splitterSize,this._splitterGrabSize)).on("drag",Object(f.c)(this._onSplitterDrag,this,[t]),this),t.on("dragStop",Object(f.c)(this._onSplitterDragStop,this,[t]),this),t.on("dragStart",Object(f.c)(this._onSplitterDragStart,this,[t]),this),this._splitter.splice(e,0,t),t}},{key:"_getItemsForSplitter",value:function(e){var t=Object(f.g)(e,this._splitter);return{before:this.contentItems[t],after:this.contentItems[t+1]}}},{key:"_isDocked",value:function(e){if(void 0===e){for(var t=0,n=0;n<this.contentItems.length;++n)this._isDocked(n)&&t++;return t}return e<this.contentItems.length?this.contentItems[e]._docker&&this.contentItems[e]._docker.docked:void 0}},{key:"_validateDocking",value:function(e){for(var t=1<(e=e||this).contentItems.length-e._isDocked(),n=0;n<e.contentItems.length;++n)e.contentItems[n]instanceof u.a&&(e.contentItems[n].header._setDockable(e._isDocked(n)||t),e.contentItems[n].header._$setClosable(t))}},{key:"_getMinimumDimensions",value:function(e){for(var t=0,i=0,o=0;o<e.length;++o)t=n(e[o].minWidth||0,t),i=n(e[o].minHeight||0,i);return{horizontal:t,vertical:i}}},{key:"_onSplitterDragStart",value:function(e){var t=this._getItemsForSplitter(e),n=this.layoutManager.config.dimensions[this._isColumn?"minItemHeight":"minItemWidth"],i=this._getMinimumDimensions(t.before.config.content),o=this._isColumn?i.vertical:i.horizontal,s=this._getMinimumDimensions(t.after.config.content),r=this._isColumn?s.vertical:s.horizontal;this._splitterPosition=0,this._splitterMinPosition=-1*(t.before.element[this._dimension]()-(o||n)),this._splitterMaxPosition=t.after.element[this._dimension]()-(r||n)}},{key:"_onSplitterDrag",value:function(e,t,n){var i=this._isColumn?n:t;i>this._splitterMinPosition&&i<this._splitterMaxPosition&&(this._splitterPosition=i,e.element.css(this._isColumn?"top":"left",i))}},{key:"_onSplitterDragStop",value:function(e){var t=this._getItemsForSplitter(e),n=t.before.element[this._dimension](),i=t.after.element[this._dimension](),o=(this._splitterPosition+n)/(n+i),s=t.before.config[this._dimension]+t.after.config[this._dimension];t.before.config[this._dimension]=o*s,t.after.config[this._dimension]=(1-o)*s,e.element.css({top:0,left:0}),Object(f.a)(Object(f.c)(this.callDownwards,this,["setSize"]))}}]),i}();i.a=m},function(e,t,n){var i=n(1),o=n(0),r=function(e){function t(e,n){var i;return c(this,t),(i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)))._timeout=null,i._eElement=$(e),i._oDocument=$(document),i._eBody=$(document.body),i._nButtonCode=n||0,i._nDelay=200,i._nDistance=10,i._nX=0,i._nY=0,i._nOriginalX=0,i._nOriginalY=0,i._bDragging=!1,i._fMove=Object(o.c)(i.onMouseMove,i),i._fUp=Object(o.c)(i.onMouseUp,i),i._fDown=Object(o.c)(i.onMouseDown,i),i._eElement.on("mousedown touchstart",i._fDown),i}return l(t,i.b),s(t,[{key:"destroy",value:function(){this._eElement.unbind("mousedown touchstart",this._fDown),this._oDocument.unbind("mouseup touchend",this._fUp),this._eElement=null,this._oDocument=null,this._eBody=null}},{key:"onMouseDown",value:function(e){if(e.preventDefault(),0==e.button||"touchstart"===e.type){var t=this._getCoordinates(e);this._nOriginalX=t.x,this._nOriginalY=t.y,this._oDocument.on("mousemove touchmove",this._fMove),this._oDocument.one("mouseup touchend",this._fUp),this._timeout=setTimeout(Object(o.c)(this._startDrag,this),this._nDelay)}}},{key:"onMouseMove",value:function(e){var t=Math.abs;if(null!=this._timeout){e.preventDefault();var n=this._getCoordinates(e);this._nX=n.x-this._nOriginalX,this._nY=n.y-this._nOriginalY,!1===this._bDragging&&(t(this._nX)>this._nDistance||t(this._nY)>this._nDistance)&&(clearTimeout(this._timeout),this._startDrag()),this._bDragging&&this.emit("drag",this._nX,this._nY,e)}}},{key:"onMouseUp",value:function(e){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),!0===this._bDragging&&(this._bDragging=!1,this.emit("dragStop",e,this._nOriginalX+this._nX)))}},{key:"_startDrag",value: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)}},{key:"_getCoordinates",value:function(e){return{x:(e=Object(o.e)(e)).pageX,y:e.pageY}}}]),t}();t.a=r},function(e,t,n){var i=n(9);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e){e.exports=function(e){return"object"==(void 0===e?"undefined":r(e))?null!==e:"function"==typeof e}},function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(0);t.a=function(){function e(){if(c(this,e),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"],36<this._keys.length)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"]}return s(e,[{key:"minifyConfig",value:function(e){var t={};return this._nextLevel(e,t,"_min"),t}},{key:"unminifyConfig",value:function(e){var t={};return this._nextLevel(e,t,"_max"),t}},{key:"_nextLevel",value:function(e,t,n){var i,o;for(i in e)e instanceof Array&&(i=parseInt(i,10)),e.hasOwnProperty(i)&&(o=this[n](i,this._keys),"object"==r(e[i])?(t[o]=e[i]instanceof Array?[]:{},this._nextLevel(e[i],t[o],n)):t[o]=this[n](e[i],this._values))}},{key:"_min",value:function(e,t){if("string"==typeof e&&1===e.length)return"___"+e;var n=Object(i.g)(e,t);return-1===n?e:n.toString(36)}},{key:"_max",value:function(e,t){return"string"==typeof e&&1===e.length?t[parseInt(e,36)]:"string"==typeof e&&"___"===e.substr(0,3)?e[3]:e}}]),e}()},function(e,t,n){var i=n(3),o=n(6),r=function(e){function t(e,n,i){var o;return c(this,t),(o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,null))).isRoot=!0,o.type="root",o.element=$('<div class="lm_goldenlayout lm_item lm_root"></div>'),o.childElementContainer=o.element,o._containerElement=i,o._containerElement.append(o.element),o}return l(t,i.a),s(t,[{key:"addChild",value:function(e){if(0<this.contentItems.length)throw new Error("Root node can only have a single child");e=this.layoutManager._$normalizeContentItem(e,this),this.childElementContainer.append(e.element),i.a.prototype.addChild.call(this,e),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"setSize",value:function(e,t){e=void 0===e?this._containerElement.width():e,t=void 0===t?this._containerElement.height():t,this.element.width(e),this.element.height(t),this.contentItems[0]&&(this.contentItems[0].element.width(e),this.contentItems[0].element.height(t))}},{key:"_$highlightDropZone",value:function(){this.layoutManager.tabDropPlaceholder.remove(),i.a.prototype._$highlightDropZone.apply(this,arguments)}},{key:"_$onDrop",value:function(e,t){var n;if(e.isComponent&&((n=this.layoutManager.createContentItem({type:"stack",header:e.config.header||{}},this))._$init(),n.addChild(e),e=n),this.contentItems.length){("row"===e.config.type||"column"===e.config.type)&&((n=this.layoutManager.createContentItem({type:"stack"},this)).addChild(e),e=n);var i="x"==t.side[0]?"row":"column",s="x"==t.side[0]?"width":"height",r="2"==t.side[1],a=this.contentItems[0];if(a instanceof o.a&&a.type==i){var l=a.contentItems[r?0:a.contentItems.length-1];a.addChild(e,r?0:void 0,!0),l.config[s]*=.5,e.config[s]=l.config[s],a.callDownwards("setSize")}else{var c=this.layoutManager.createContentItem({type:i},this);this.replaceChild(a,c),c.addChild(e,r?0:void 0,!0),c.addChild(a,r?void 0:0,!0),a.config[s]=50,e.config[s]=50,c.callDownwards("setSize")}}else this.addChild(e)}}]),t}();t.a=r},function(t,i,o){var r=o(3),h=o(6),u=o(28),d=o(0),f=function(t){function i(e,t,n){var o;c(this,i),(o=a(this,(i.__proto__||Object.getPrototypeOf(i)).call(this,e,t,n))).element=$('<div class="lm_item lm_stack"></div>'),o._activeContentItem=null;var s=e.config;return o._header={show:!0===s.settings.hasHeaders&&!1!==t.hasHeaders,popout:s.settings.showPopoutIcon&&s.labels.popout,maximise:s.settings.showMaximiseIcon&&s.labels.maximise,close:s.settings.showCloseIcon&&s.labels.close,minimise:s.labels.minimise},s.header&&Object(d.b)(o._header,s.header),t.header&&Object(d.b)(o._header,t.header),t.content&&t.content[0]&&t.content[0].header&&Object(d.b)(o._header,t.content[0].header),o._dropZones={},o._dropSegment=null,o._contentAreaDimensions=null,o._dropIndex=null,o.isStack=!0,o.childElementContainer=$('<div class="lm_items"></div>'),o.header=new u.a(e,o),o.element.on("mouseleave mouseenter",Object(d.c)(function(e){this._docker&&this._docker.docked&&this.childElementContainer[this._docker.dimension]("mouseenter"==e.type?this._docker.realSize:0)},o)),o.element.append(o.header.element),o.element.append(o.childElementContainer),o._setupHeaderPosition(),o._$validateClosability(),o}return l(i,r.a),s(i,[{key:"dock",value:function(e){this._header.dock&&this.parent instanceof h.a&&this.parent.dock(this,e)}},{key:"setSize",value:function(){if("none"!==this.element.css("display")){var e=this._docker&&this._docker.docked,t={width:this.element.width(),height:this.element.height()};this._header.show&&(t[this._sided?"width":"height"]-=this.layoutManager.config.dimensions.headerHeight),e&&(t[this._docker.dimension]=this._docker.realSize),e&&"height"!=this._docker.dimension||this.childElementContainer.width(t.width),e&&"width"!=this._docker.dimension||this.childElementContainer.height(t.height);for(var n=0;n<this.contentItems.length;n++)this.contentItems[n].element.width(t.width),this.contentItems[n].element.height(t.height);this.emit("resize"),this.emitBubblingEvent("stateChanged")}}},{key:"_$init",value:function(){var e,t;if(!0!==this.isInitialised){for(r.a.prototype._$init.call(this),e=0;e<this.contentItems.length;e++)this.header.createTab(this.contentItems[e]),this.contentItems[e]._$hide();if(0<this.contentItems.length){if(!(t=this.contentItems[this.config.activeItemIndex||0]))throw new Error("Configured activeItemIndex out of bounds");this.setActiveContentItem(t)}}}},{key:"setActiveContentItem",value:function(e){if(-1===Object(d.g)(e,this.contentItems))throw new Error("contentItem is not a child of this stack");null!==this._activeContentItem&&this._activeContentItem._$hide(),this._activeContentItem=e,this.header.setActiveContentItem(e),e._$show(),this.emit("activeContentItemChanged",e),this.layoutManager.emit("activeContentItemChanged",e),this.emitBubblingEvent("stateChanged")}},{key:"getActiveContentItem",value:function(){return this.header.activeContentItem}},{key:"addChild",value:function(e,t){t>this.contentItems.length&&(t-=1),e=this.layoutManager._$normalizeContentItem(e,this),r.a.prototype.addChild.call(this,e,t),this.childElementContainer.append(e.element),this.header.createTab(e,t),this.setActiveContentItem(e),this.callDownwards("setSize"),this._$validateClosability(),this.parent instanceof h.a&&this.parent._validateDocking(),this.emitBubblingEvent("stateChanged")}},{key:"removeChild",value:function(e,t){var i=Object(d.g)(e,this.contentItems);r.a.prototype.removeChild.call(this,e,t),this.header.removeTab(e),this.header.activeContentItem===e&&(0<this.contentItems.length?this.setActiveContentItem(this.contentItems[n(i-1,0)]):this._activeContentItem=null),this._$validateClosability(),this.parent instanceof h.a&&this.parent._validateDocking(),this.emitBubblingEvent("stateChanged")}},{key:"undisplayChild",value:function(e){if(1<this.contentItems.length){var t=Object(d.g)(e,this.contentItems);e._$hide&&e._$hide(),this.setActiveContentItem(this.contentItems[0===t?t+1:t-1])}else this.header.hideTab(e),e._$hide&&e._$hide(),r.a.prototype.undisplayChild.call(this,e),this.parent instanceof h.a&&this.parent._validateDocking();this.emitBubblingEvent("stateChanged")}},{key:"_$validateClosability",value:function(){var e,t,n;for(e=this.header._isClosable(),n=0,t=this.contentItems.length;n<t&&e;n++)e=this.contentItems[n].config.isClosable;this.header._$setClosable(e)}},{key:"_$destroy",value:function(){r.a.prototype._$destroy.call(this),this.header._$destroy(),this.element.off("mouseenter mouseleave")}},{key:"_$onDrop",value:function(e){if("header"===this._dropSegment)return this._resetHeaderDropZone(),void this.addChild(e,this._dropIndex);if("body"!==this._dropSegment){var t,n,i,o="top"===this._dropSegment||"bottom"===this._dropSegment,s="left"===this._dropSegment||"right"===this._dropSegment,r="top"===this._dropSegment||"left"===this._dropSegment,a=o&&this.parent.isColumn||s&&this.parent.isRow,l=o?"column":"row",c=o?"height":"width";e.isComponent&&((n=this.layoutManager.createContentItem({type:"stack",header:e.config.header||{}},this))._$init(),n.addChild(e),e=n),("row"===e.config.type||"column"===e.config.type)&&((n=this.layoutManager.createContentItem({type:"stack"},this)).addChild(e),e=n),a?(t=Object(d.g)(this,this.parent.contentItems),this.parent.addChild(e,r?t:t+1,!0),this.config[c]*=.5,e.config[c]=this.config[c],this.parent.callDownwards("setSize")):(l=o?"column":"row",i=this.layoutManager.createContentItem({type:l},this),this.parent.replaceChild(this,i),i.addChild(e,r?0:void 0,!0),i.addChild(this,r?void 0:0,!0),this.config[c]=50,e.config[c]=50,i.callDownwards("setSize")),this.parent._validateDocking()}else this.addChild(e)}},{key:"_$highlightDropZone",value:function(e,t){var n,i;for(n in this._contentAreaDimensions)if((i=this._contentAreaDimensions[n].hoverArea).x1<e&&i.x2>e&&i.y1<t&&i.y2>t)return void("header"===n?(this._dropSegment="header",this._highlightHeaderDropZone(this._sided?t:e)):(this._resetHeaderDropZone(),this._highlightBodyDropZone(n)))}},{key:"_$getArea",value:function(){if("none"===this.element.css("display"))return null;var e=r.a.prototype._$getArea,t=e.call(this,this.header.element),n=e.call(this,this.childElementContainer),i=n.x2-n.x1,o=n.y2-n.y1;return this._contentAreaDimensions={header:{hoverArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2},highlightArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}}},this._activeContentItem&&!1===this._activeContentItem.isComponent?t: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}},e.call(this,this.element)):(this._contentAreaDimensions.left={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x1+.25*i,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x1+.5*i,y2:n.y2}},this._contentAreaDimensions.top={hoverArea:{x1:n.x1+.25*i,y1:n.y1,x2:n.x1+.75*i,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*i,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1+.5*i,y1:n.y1,x2:n.x2,y2:n.y2}},this._contentAreaDimensions.bottom={hoverArea:{x1:n.x1+.25*i,y1:n.y1+.5*o,x2:n.x1+.75*i,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1+.5*o,x2:n.x2,y2:n.y2}},e.call(this,this.element))}},{key:"_highlightHeaderDropZone",value:function(t){var n,i,o,s,r,a,l,c,h=this.header.tabs.length,u=!1;if(0===h)return l=this.header.element.offset(),void this.layoutManager.dropTargetIndicator.highlightArea({x1:l.left,x2:l.left+100,y1:l.top+this.header.element.height()-20,y2:l.top+this.header.element.height()});for(n=0;n<h;n++)if(r=(i=this.header.tabs[n].element).offset(),this._sided?(s=r.top,o=r.left,c=i.height()):(s=r.left,o=r.top,c=i.width()),t>s&&t<s+c){u=!0;break}if(!(0==u&&t<s)){if(t<s+c/2?(this._dropIndex=n,i.before(this.layoutManager.tabDropPlaceholder)):(this._dropIndex=e(n+1,h),i.after(this.layoutManager.tabDropPlaceholder)),this._sided){var d=this.layoutManager.tabDropPlaceholder.offset().top;return void this.layoutManager.dropTargetIndicator.highlightArea({x1:o,x2:o+i.innerHeight(),y1:d,y2:d+this.layoutManager.tabDropPlaceholder.width()})}a=this.layoutManager.tabDropPlaceholder.offset().left,this.layoutManager.dropTargetIndicator.highlightArea({x1:a,x2:a+this.layoutManager.tabDropPlaceholder.width(),y1:o,y2:o+i.innerHeight()})}}},{key:"_resetHeaderDropZone",value:function(){this.layoutManager.tabDropPlaceholder.remove()}},{key:"toggleMaximise",value:function(e){this.isMaximised||this.dock(!1),r.a.prototype.toggleMaximise.call(this,e)}},{key:"_setupHeaderPosition",value:function(){var e=0<=["right","left","bottom"].indexOf(this._header.show)&&this._header.show;if(this.header.element.toggle(!!this._header.show),this._side=e,this._sided=0<=["right","left"].indexOf(this._side),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 t=0<=["right","bottom"].indexOf(this._side)?"before":"after";this.header.element[t](this.childElementContainer),this.callDownwards("setSize")}}},{key:"_highlightBodyDropZone",value:function(e){var t=this._contentAreaDimensions[e].highlightArea;this.layoutManager.dropTargetIndicator.highlightArea(t),this._dropSegment=e}}]),i}();i.a=f},function(e){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var i=n(44),o=n(20);e.exports=Object.keys||function(e){return i(e,o)}},function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,t,n){var i=n(45),o=n(14);e.exports=function(e){return i(o(e))}},function(e){var n=Math.ceil;e.exports=function(e){return isNaN(e=+e)?0:(0<e?t:n)(e)}},function(e,t,n){var i=n(50)("keys"),o=n(52);e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){var i=n(4),o=n(2),s=n(54),r=n(56),a=n(16),l="prototype",c=function e(t,n,c){var h,u,d,f=t&e.F,m=t&e.G,p=t&e.S,g=t&e.P,y=t&e.B,v=t&e.W,_=m?o:o[n]||(o[n]={}),b=_[l],w=m?i:p?i[n]:(i[n]||{})[l];for(h in m&&(c=n),c)(u=!f&&w&&void 0!==w[h])&&a(_,h)||(d=u?w[h]:c[h],_[h]=m&&"function"!=typeof w[h]?c[h]:y&&u?s(d,i):v&&w[h]==d?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t[l]=e[l],t}(d):g&&"function"==typeof d?s(Function.call,d):d,g&&((_.virtual||(_.virtual={}))[h]=d,t&e.R&&b&&!b[h]&&r(b,h,d)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var i=n(8),o=n(57),s=n(58),r=Object.defineProperty;t.f=n(5)?Object.defineProperty:function(e,t,n){if(i(e),t=s(t,!0),i(n),o)try{return r(e,t,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var i=n(9),o=n(4).document,s=i(o)&&i(o.createElement);e.exports=function(e){return s?o.createElement(e):{}}},function(e,t){t.a=function(){function e(t,n){c(this,e),this._reactComponent=null,this._originalComponentWillUpdate=null,this._container=t,this._initialState=n,this._reactClass=this._getReactClass(),this._container.on("open",this._render,this),this._container.on("destroy",this._destroy,this)}return s(e,[{key:"_render",value:function(){this._reactComponent=ReactDOM.render(this._getReactComponent(),this._container.getElement()[0]),this._originalComponentWillUpdate=this._reactComponent.componentWillUpdate||function(){},this._reactComponent.componentWillUpdate=this._onUpdate.bind(this),this._container.getState()&&this._reactComponent.setState(this._container.getState())}},{key:"_destroy",value:function(){ReactDOM.unmountComponentAtNode(this._container.getElement()[0]),this._container.off("open",this._render,this),this._container.off("destroy",this._destroy,this)}},{key:"_onUpdate",value:function(e,t){this._container.setState(t),this._originalComponentWillUpdate.call(this._reactComponent,e,t)}},{key:"_getReactClass",value:function(){var e,t=this._container._config.component;if(!t)throw new Error("No react component name. type: react-component needs a field `component`");if(!(e=this._container.layoutManager.getComponent(t)))throw new Error('React component "'+t+'" not found. Please register all components with GoldenLayout using `registerComponent(name, component)`');return e}},{key:"_getReactComponent",value:function(){var e={glEventHub:this._container.layoutManager.eventHub,glContainer:this._container},t=$.extend(e,this._container._config.props);return React.createElement(this._reactClass,t)}}]),e}()},function(e,t,n){var i=n(1),o=n(0),r=function(e){function t(e){var n;return c(this,t),(n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)))._layoutManager=e,n._dontPropagateToParent=null,n._childEventSource=null,n.on(i.a,Object(o.c)(n._onEventFromThis,n)),n._boundOnEventFromChild=Object(o.c)(n._onEventFromChild,n),$(window).on("gl_child_event",n._boundOnEventFromChild),n}return l(t,i.b),s(t,[{key:"_onEventFromThis",value:function(){var e=Array.prototype.slice.call(arguments);this._layoutManager.isSubWindow&&e[0]!==this._dontPropagateToParent&&this._propagateToParent(e),this._propagateToChildren(e),this._dontPropagateToParent=null,this._childEventSource=null}},{key:"_$onEventFromParent",value:function(e){this._dontPropagateToParent=e[0],this.emit.apply(this,e)}},{key:"_onEventFromChild",value:function(e){this._childEventSource=e.originalEvent.__gl,this.emit.apply(this,e.originalEvent.__glArgs)}},{key:"_propagateToParent",value:function(e){var t,n="gl_child_event";document.createEvent?(t=window.opener.document.createEvent("HTMLEvents")).initEvent(n,!0,!0):(t=window.opener.document.createEventObject()).eventType=n,t.eventName=n,t.__glArgs=e,t.__gl=this._layoutManager,document.createEvent?window.opener.dispatchEvent(t):window.opener.fireEvent("on"+t.eventType,t)}},{key:"_propagateToChildren",value:function(e){var t,n;for(n=0;n<this._layoutManager.openPopouts.length;n++)(t=this._layoutManager.openPopouts[n].getGlInstance())&&t!==this._childEventSource&&t.eventHub._$onEventFromParent(e)}},{key:"destroy",value:function(){$(window).off("gl_child_event",this._boundOnEventFromChild)}}]),t}();t.a=r},function(e,t){t.a=function(){function e(t,n){c(this,e),this.name=t,this.origin=n,this.isPropagationStopped=!1}return s(e,[{key:"stopPropagation",value:function(){this.isPropagationStopped=!0}}]),e}()},function(e,t){var n=function(e){function t(e,n){var i;return c(this,t),(i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this))).name="Configuration Error",i.message=e,i.node=n,i}return l(t,Error),t}();t.a=n},function(e,t,n){var i=n(1),o=n(29),r=n(31),h=n(0),u=function(e){function t(e,n){var i;return c(this,t),(i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this))).layoutManager=e,i.element=$('<div class="lm_header"><ul class="lm_tabs"></ul><ul class="lm_controls"></ul><ul class="lm_tabdropdown_list"></ul></div>'),!0===i.layoutManager.config.settings.selectionEnabled&&(i.element.addClass("lm_selectable"),i.element.on("click touchstart",Object(h.c)(i._onHeaderClick,i))),i.tabsContainer=i.element.find(".lm_tabs"),i.tabDropdownContainer=i.element.find(".lm_tabdropdown_list"),i.tabDropdownContainer.hide(),i.controlsContainer=i.element.find(".lm_controls"),i.parent=n,i.parent.on("resize",i._updateTabSizes,i),i.tabs=[],i.tabsMarkedForRemoval=[],i.activeContentItem=null,i.closeButton=null,i.dockButton=null,i.tabDropdownButton=null,i.hideAdditionalTabsDropdown=Object(h.c)(i._hideAdditionalTabsDropdown,i),$(document).mouseup(i.hideAdditionalTabsDropdown),i._lastVisibleTabIndex=-1,i._tabControlOffset=i.layoutManager.config.settings.tabControlOffset,i._createControls(),i}return l(t,i.b),s(t,[{key:"createTab",value:function(e,t){var n,i;for(i=0;i<this.tabs.length;i++)if(this.tabs[i].contentItem===e)return;return n=new o.a(this,e),0===this.tabs.length?(this.tabs.push(n),void this.tabsContainer.append(n.element)):(void 0===t&&(t=this.tabs.length),0<t?this.tabs[t-1].element.after(n.element):this.tabs[0].element.before(n.element),this.tabs.splice(t,0,n),void this._updateTabSizes())}},{key:"removeTab",value:function(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t]._$destroy(),void this.tabs.splice(t,1);for(t=0;t<this.tabsMarkedForRemoval.length;t++)if(this.tabsMarkedForRemoval[t].contentItem===e)return this.tabsMarkedForRemoval[t]._$destroy(),void this.tabsMarkedForRemoval.splice(t,1);throw new Error("contentItem is not controlled by this header")}},{key:"hideTab",value:function(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t].element.hide(),this.tabsMarkedForRemoval.push(this.tabs[t]),void this.tabs.splice(t,1);throw new Error("contentItem is not controlled by this header")}},{key:"setActiveContentItem",value:function(e){var t,n,i,o;for(t=0;t<this.tabs.length;t++)i=this.tabs[t].contentItem===e,this.tabs[t].setActive(i),!0===i&&(this.activeContentItem=e,this.parent.config.activeItemIndex=t);if(this.layoutManager.config.settings.reorderOnTabMenuClick&&-1!==this._lastVisibleTabIndex&&this.parent.config.activeItemIndex>this._lastVisibleTabIndex){for(o=this.tabs[this.parent.config.activeItemIndex],n=this.parent.config.activeItemIndex;0<n;n--)this.tabs[n]=this.tabs[n-1];this.tabs[0]=o,this.parent.config.activeItemIndex=0}this._updateTabSizes(),this.parent.emitBubblingEvent("stateChanged")}},{key:"position",value:function(e){var t=this.parent._header.show;if(this.parent._docker&&this.parent._docker.docked)throw new Error("Can't change header position in docked stack");return t&&!this.parent._side&&(t="top"),void 0!==e&&this.parent._header.show!=e&&(this.parent._header.show=e,this.parent._setupHeaderPosition()),t}},{key:"_$setClosable",value:function(e){return this._canDestroy=e||1<this.tabs.length,this.closeButton&&this._isClosable()&&(this.closeButton.element[e?"show":"hide"](),!0)}},{key:"_setDockable",value:function(e){return this.dockButton&&this.parent._header&&this.parent._header.dock&&(this.dockButton.element.toggle(!!e),!0)}},{key:"_$destroy",value:function(){this.emit("destroy",this);for(var e=0;e<this.tabs.length;e++)this.tabs[e]._$destroy();$(document).off("mouseup",this.hideAdditionalTabsDropdown),this.element.remove()}},{key:"_getHeaderSetting",value:function(e){if(e in this.parent._header)return this.parent._header[e]}},{key:"_createControls",value:function(){var e,t,n,i,o,s,a,l,c;if(c=Object(h.c)(this._showAdditionalTabsDropdown,this),l=this.layoutManager.config.labels.tabDropdown,this.tabDropdownButton=new r.a(this,l,"lm_tabdropdown",c),this.tabDropdownButton.element.hide(),this.parent._header&&this.parent._header.dock){var u=Object(h.c)(this.parent.dock,this.parent);n=this._getHeaderSetting("dock"),this.dockButton=new r.a(this,n,"lm_dock",u)}this._getHeaderSetting("popout")&&(t=Object(h.c)(this._onPopoutClick,this),n=this._getHeaderSetting("popout"),new r.a(this,n,"lm_popout",t)),this._getHeaderSetting("maximise")&&(s=Object(h.c)(this.parent.toggleMaximise,this.parent),i=this._getHeaderSetting("maximise"),o=this._getHeaderSetting("minimise"),a=new r.a(this,i,"lm_maximise",s),this.parent.on("maximised",function(){a.element.attr("title",o)}),this.parent.on("minimised",function(){a.element.attr("title",i)})),this._isClosable()&&(e=Object(h.c)(this.parent.remove,this.parent),n=this._getHeaderSetting("close"),this.closeButton=new r.a(this,n,"lm_close",e))}},{key:"_showAdditionalTabsDropdown",value:function(){this.tabDropdownContainer.show()}},{key:"_hideAdditionalTabsDropdown",value:function(){this.tabDropdownContainer.hide()}},{key:"_isClosable",value:function(){return this.parent.config.isClosable&&this.layoutManager.config.settings.showCloseIcon}},{key:"_onPopoutClick",value:function(){!0===this.layoutManager.config.settings.popoutWholeStack?this.parent.popout():this.activeContentItem.popout()}},{key:"_onHeaderClick",value:function(e){e.target===this.element[0]&&this.parent.select()}},{key:"_updateTabSizes",value:function(e){if(0!==this.tabs.length){this.tabDropdownButton.element.toggle(!0===e);var t=function(e){return e?"width":"height"};this.element.css(t(!this.parent._sided),""),this.element[t(this.parent._sided)](this.layoutManager.config.dimensions.headerHeight);var n,i,o,s,r=this.element.outerWidth()-this.controlsContainer.outerWidth()-this._tabControlOffset,a=0,l=0,c=0,h=this.layoutManager.config.settings.tabOverlapAllowance,u=!1,d=this.activeContentItem?this.tabs.indexOf(this.activeContentItem.tab):0,f=this.tabs[d];for(this.parent._sided&&(r=this.element.outerHeight()-this.controlsContainer.outerHeight()-this._tabControlOffset),this._lastVisibleTabIndex=-1,i=0;i<this.tabs.length;i++)if(n=this.tabs[i].element,this.tabsContainer.append(n),a+=n.outerWidth()+parseInt(n.css("margin-right"),10),(l=d<=i?a:a+f.element.outerWidth()+parseInt(f.element.css("margin-right"),10))>r){if(u)i===d&&(n.css({"z-index":"auto","margin-left":""}),this.tabsContainer.append(n));else if((c=0<d&&d<=i?(l-r)/(i-1):(l-r)/i)<h){for(o=0;o<=i;o++)s=o!==d&&0!==o?"-"+c+"px":"",this.tabs[o].element.css({"z-index":i-o,"margin-left":s});this._lastVisibleTabIndex=i,this.tabsContainer.append(n)}else u=!0;if(u&&i!==d){if(!e)return void this._updateTabSizes(!0);n.css({"z-index":"auto","margin-left":""}),this.tabDropdownContainer.append(n)}}else this._lastVisibleTabIndex=i,n.css({"z-index":"auto","margin-left":""}),this.tabsContainer.append(n)}}}]),t}();t.a=u},function(e,t,n){var i=n(7),o=n(30),r=n(0);t.a=function(){function e(t,n){c(this,e),this.header=t,this.contentItem=n,this.element=$('<li class="lm_tab"><i class="lm_left"></i><span class="lm_title"></span><div class="lm_close_tab"></div><i class="lm_right"></i></li>'),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,!0===this._layoutManager.config.settings.reorderEnabled&&!0===n.config.reorderEnabled&&(this._dragListener=new i.a(this.element),this._dragListener.on("dragStart",this._onDragStart,this),this.contentItem.on("destroy",this._dragListener.destroy,this._dragListener)),this._onTabClickFn=Object(r.c)(this._onTabClick,this),this._onCloseClickFn=Object(r.c)(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))}return s(e,[{key:"setTitle",value:function(e){this.element.attr("title",Object(r.k)(e)),this.titleElement.html(e)}},{key:"setActive",value:function(e){e===this.isActive||(this.isActive=e,e?this.element.addClass("lm_active"):this.element.removeClass("lm_active"))}},{key:"_$destroy",value: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()}},{key:"_onDragStart",value:function(e,t){return this.header._canDestroy?(!0===this.contentItem.parent.isMaximised&&this.contentItem.parent.toggleMaximise(),void new o.a(e,t,this._dragListener,this._layoutManager,this.contentItem,this.header.parent)):null}},{key:"_onTabClick",value:function(e){if(0===e.button||"touchstart"===e.type){var t=this.header.parent.getActiveContentItem();this.contentItem!==t&&this.header.parent.setActiveContentItem(this.contentItem)}else 1===e.button&&this.contentItem.config.isClosable&&this._onCloseClick(e)}},{key:"_onCloseClick",value:function(e){e.stopPropagation(),this.header._canDestroy&&this.header.parent.removeChild(this.contentItem)}},{key:"_onCloseMousedown",value:function(e){e.stopPropagation()}}]),e}()},function(e,t,n){var i=n(1),o=n(0),r=function(e){function t(e,n,i,s,r,l){var h;c(this,t),(h=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)))._dragListener=i,h._layoutManager=s,h._contentItem=r,h._originalParent=l,h._area=null,h._lastValidArea=null,h._dragListener.on("drag",h._onDrag,h),h._dragListener.on("dragStop",h._onDrop,h),h.element=$('<div class="lm_dragProxy"><div class="lm_header"><ul class="lm_tabs"><li class="lm_tab lm_active"><i class="lm_left"></i><span class="lm_title"></span><i class="lm_right"></i></li></ul></div><div class="lm_content"></div></div>'),l&&l._side&&(h._sided=l._sided,h.element.addClass("lm_"+l._side),0<=["right","bottom"].indexOf(l._side)&&h.element.find(".lm_content").after(h.element.find(".lm_header"))),h.element.css({left:e,top:n}),h.element.find(".lm_tab").attr("title",Object(o.k)(h._contentItem.config.title)),h.element.find(".lm_title").html(h._contentItem.config.title),h.childElementContainer=h.element.find(".lm_content"),h.childElementContainer.append(r.element),h._undisplayTree(),h._layoutManager._$calculateItemAreas(),h._setDimensions(),$(document.body).append(h.element);var u=h._layoutManager.container.offset();return h._minX=u.left,h._minY=u.top,h._maxX=h._layoutManager.container.width()+h._minX,h._maxY=h._layoutManager.container.height()+h._minY,h._width=h.element.width(),h._height=h.element.height(),h._setDropPosition(e,n),h}return l(t,i.b),s(t,[{key:"_onDrag",value:function(e,t,n){var i=(n=Object(o.e)(n)).pageX,s=n.pageY;(i>this._minX&&i<this._maxX&&s>this._minY&&s<this._maxY||!0!==this._layoutManager.config.settings.constrainDragToContainer)&&this._setDropPosition(i,s)}},{key:"_setDropPosition",value:function(e,t){this.element.css({left:e,top:t}),this._area=this._layoutManager._$getArea(e,t),null!==this._area&&(this._lastValidArea=this._area,this._area.contentItem._$highlightDropZone(e,t,this._area))}},{key:"_onDrop",value:function(){this._updateTree(),this._layoutManager.dropTargetIndicator.hide(),null===this._area?null===this._lastValidArea?this._originalParent?this._originalParent.addChild(this._contentItem):this._contentItem._$destroy():this._lastValidArea.contentItem._$onDrop(this._contentItem,this._lastValidArea):this._area.contentItem._$onDrop(this._contentItem,this._area),this.element.remove(),this._layoutManager.emit("itemDropped",this._contentItem)}},{key:"_undisplayTree",value:function(){this._contentItem.parent&&this._contentItem.parent.undisplayChild(this._contentItem)}},{key:"_updateTree",value:function(){this._contentItem.parent&&this._contentItem.parent.removeChild(this._contentItem,!0),this._contentItem._$setParent(this)}},{key:"_setDimensions",value:function(){var e=this._layoutManager.config.dimensions,t=e.dragProxyWidth,n=e.dragProxyHeight;this.element.width(t),this.element.height(n),t-=this._sided?e.headerHeight:0,n-=this._sided?0:e.headerHeight,this.childElementContainer.width(t),this.childElementContainer.height(n),this._contentItem.element.width(t),this._contentItem.element.height(n),this._contentItem.callDownwards("_$show"),this._contentItem.callDownwards("setSize")}}]),t}();t.a=r},function(e,t){t.a=function(){function e(t,n,i,o){c(this,e),this._header=t,this.element=$('<li class="'+i+'" title="'+n+'"></li>'),this._header.on("destroy",this._$destroy,this),this._action=o,this.element.on("click touchstart",this._action),this._header.controlsContainer.append(this.element)}return s(e,[{key:"_$destroy",value:function(){this.element.off(),this.element.remove()}}]),e}()},function(e,t,n){var i=n(3),o=n(33),r=function(e){function t(e,n,i){c(this,t);var s=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,i)),r=e.getComponent(s.config.componentName),l=$.extend(!0,{},s.config.componentState||{});return l.componentName=s.config.componentName,s.componentName=s.config.componentName,""===s.config.title&&(s.config.title=s.config.componentName),s.isComponent=!0,s.container=new o.a(s.config,s,e),s.instance=new r(s.container,l),s.element=s.container._element,s}return l(t,i.a),s(t,[{key:"close",value:function(){this.parent.removeChild(this)}},{key:"setSize",value:function(){"none"!==this.element.css("display")&&this.container._$setSize(this.element.width(),this.element.height())}},{key:"_$init",value:function(){i.a.prototype._$init.call(this),this.container.emit("open")}},{key:"_$hide",value:function(){this.container.hide(),i.a.prototype._$hide.call(this)}},{key:"_$show",value:function(){this.container.show(),i.a.prototype._$show.call(this)}},{key:"_$shown",value:function(){this.container.shown(),i.a.prototype._$shown.call(this)}},{key:"_$destroy",value:function(){this.container.emit("destroy",this),i.a.prototype._$destroy.call(this)}},{key:"_$getArea",value:function(){return null}}]),t}();t.a=r},function(e,t,n){var i=n(1),o=function(e){function t(e,n,i){var o;return c(this,t),(o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this))).width=null,o.height=null,o.title=e.componentName,o.parent=n,o.layoutManager=i,o.isHidden=!1,o._config=e,o._element=$('<div class="lm_item_container"><div class="lm_content"></div></div>'),o._contentElement=o._element.find(".lm_content"),o}return l(t,i.b),s(t,[{key:"getElement",value:function(){return this._contentElement}},{key:"hide",value:function(){this.emit("hide"),this.isHidden=!0,this._element.hide()}},{key:"show",value:function(){this.emit("show"),this.isHidden=!1,this._element.show(),(0!=this.height||0!=this.width)&&this.emit("shown")}},{key:"setSize",value:function(e,t){for(var n,i,o,s,r=this.parent,a=this;!r.isColumn&&!r.isRow;)if(a=r,(r=r.parent).isRoot)return!1;for(n=("height"===(i=r.isColumn?"height":"width")?t:e)/(this[i]*(1/(a.config[i]/100)))*100,o=(a.config[i]-n)/(r.contentItems.length-1),s=0;s<r.contentItems.length;s++)r.contentItems[s]===a?r.contentItems[s].config[i]=n:r.contentItems[s].config[i]+=o;return r.callDownwards("setSize"),!0}},{key:"close",value:function(){this._config.isClosable&&(this.emit("close"),this.parent.close())}},{key:"getState",value:function(){return this._config.componentState}},{key:"extendState",value:function(e){this.setState($.extend(!0,this.getState(),e))}},{key:"setState",value:function(e){this._config.componentState=e,this.parent.emitBubblingEvent("stateChanged")}},{key:"setTitle",value:function(e){this.parent.setTitle(e)}},{key:"_$setSize",value:function(e,t){(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,$.zepto?this._contentElement.width(e):this._contentElement.outerWidth(e),$.zepto?this._contentElement.height(t):this._contentElement.outerHeight(t),this.emit("resize"))}}]),t}();t.a=o},function(e,n,i){var o=i(68),r=i.n(o),h=i(1),u=i(11),d=i(0),f=function(e){function n(e,t,i,o,s){var r;return c(this,n),(r=a(this,(n.__proto__||Object.getPrototypeOf(n)).call(this))).isInitialised=!1,r._config=e,r._dimensions=t,r._parentId=i,r._indexInParent=o,r._layoutManager=s,r._popoutWindow=null,r._id=null,r._createWindow(),r}return l(n,h.b),s(n,[{key:"toConfig",value:function(){if(!1===this.isInitialised)throw new Error("Can't create config, layout not yet initialised");return{dimensions:{width:this.getGlInstance().width,height:this.getGlInstance().height,left:this._popoutWindow.screenX||this._popoutWindow.screenLeft,top:this._popoutWindow.screenY||this._popoutWindow.screenTop},content:this.getGlInstance().toConfig().content,parentId:this._parentId,indexInParent:this._indexInParent}}},{key:"getGlInstance",value:function(){return this._popoutWindow.__glInstance}},{key:"getWindow",value:function(){return this._popoutWindow}},{key:"close",value:function(){if(this.getGlInstance())this.getGlInstance()._$closeWindow();else try{this.getWindow().close()}catch(e){}}},{key:"popIn",value:function(){var e,t;this._indexInParent;this._parentId&&(e=$.extend(!0,{},this.getGlInstance().toConfig()).content[0],!(t=this._layoutManager.root.getItemsById(this._parentId)[0])&&(t=0<this._layoutManager.root.contentItems.length?this._layoutManager.root.contentItems[0]:this._layoutManager.root)),t.addChild(e,this._indexInParent),this.close()}},{key:"_createWindow",value:function(){var e,n=this._createUrl(),i=t(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,i,o),this._popoutWindow)$(this._popoutWindow).on("load",Object(d.c)(this._positionWindow,this)).on("unload beforeunload",Object(d.c)(this._onClose,this)),e=setInterval(Object(d.c)(function(){this._popoutWindow.__glInstance&&this._popoutWindow.__glInstance.isInitialised&&(this._onInitialised(),clearInterval(e))},this),10);else if(!0===this._layoutManager.config.settings.blockedPopoutsThrowError){var s=new Error("Popout blocked");throw s.type="popoutBlocked",s}}},{key:"_serializeWindowOptions",value:function(e){var t,n=[];for(t in e)n.push(t+"="+e[t]);return n.join(",")}},{key:"_createUrl",value:function(){var e,t={content:this._config},n="gl-window-config-"+Object(d.f)();t=(new u.a).minifyConfig(t);try{localStorage.setItem(n,r()(t))}catch(t){throw new Error("Error while writing to localStorage "+t.toString())}return 1===(e=document.location.href.split("?")).length?e[0]+"?gl-window="+n:document.location.href+"&gl-window="+n}},{key:"_positionWindow",value:function(){this._popoutWindow.moveTo(this._dimensions.left,this._dimensions.top),this._popoutWindow.focus()}},{key:"_onInitialised",value:function(){this.isInitialised=!0,this.getGlInstance().on("popIn",this.popIn,this),this.emit("initialised")}},{key:"_onClose",value:function(){setTimeout(Object(d.c)(this.emit,this,["closed"]),50)}}]),n}();n.a=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var i=n(36),o=(n.n(i),n(37)),s=(n.n(o),n(38)),r=(n.n(s),n(39));n.d(t,"default",function(){return r.a});var a=n(33);n.d(t,"ItemContainer",function(){return a.a});var l=n(34);n.d(t,"BrowserPopout",function(){return l.a});var c=n(28);n.d(t,"Header",function(){return c.a});var h=n(31);n.d(t,"HeaderButton",function(){return h.a});var u=n(29);n.d(t,"Tab",function(){return u.a});var d=n(32);n.d(t,"Component",function(){return d.a});var f=n(12);n.d(t,"Root",function(){return f.a});var m=n(6);n.d(t,"RowOrColumn",function(){return m.a});var p=n(13);n.d(t,"Stack",function(){return p.a});var g=n(26);n.d(t,"BubblingEvent",function(){return g.a});var y=n(11);n.d(t,"ConfigMinifier",function(){return y.a});var v=n(7);n.d(t,"DragListener",function(){return v.a});var _=n(1);n.d(t,"EventEmitter",function(){return _.b});var b=n(25);n.d(t,"EventHub",function(){return b.a});var w=n(24);n.d(t,"ReactComponentHandler",function(){return w.a}),{}.ES6&&(n(74),n(77))},function(){},function(){},function(){},function(e,i,o){var h=o(1),u=o(24),d=o(11),f=o(25),m=o(12),p=o(6),g=o(13),y=o(32),v=o(3),_=o(34),b=o(70),w=o(71),x=o(72),k=o(27),I=o(73),C=o(0),S=function(e){function i(e,t){var n;if(c(this,i),!$){var o="jQuery is missing as dependency for GoldenLayout. ";throw o+='Please either expose $ on GoldenLayout\'s scope (e.g. window) or add "jquery" to ',o+="your paths when using RequireJS/AMD",new Error(o)}return(n=a(this,(i.__proto__||Object.getPrototypeOf(i)).call(this))).isInitialised=!1,n._isFullPage=!1,n._resizeTimeoutId=null,n._components={"lm-react-component":u.a},n._itemAreas=[],n._resizeFunction=Object(C.c)(n._onResize,n),n._unloadFunction=Object(C.c)(n._onUnload,n),n._maximisedItem=null,n._maximisePlaceholder=$('<div class="lm_maximise_place"></div>'),n._creationTimeoutPassed=!1,n._subWindowsCreated=!1,n._dragSources=[],n._updatingColumnsResponsive=!1,n._firstLoad=!0,n.width=null,n.height=null,n.root=null,n.openPopouts=[],n.selectedItem=null,n.isSubWindow=!1,n.eventHub=new f.a(n),n.config=n._createConfig(e),n.container=t,n.dropTargetIndicator=null,n.transitionIndicator=null,n.tabDropPlaceholder=$('<div class="lm_drop_tab_placeholder"></div>'),!0===n.isSubWindow&&$("body").css("visibility","hidden"),n._typeToItem={column:Object(C.c)(p.a,n,[!0]),row:Object(C.c)(p.a,n,[!1]),stack:g.a,component:y.a},n}return l(i,h.b),s(i,[{key:"minifyConfig",value:function(e){return(new d.a).minifyConfig(e)}},{key:"unminifyConfig",value:function(e){return(new d.a).unminifyConfig(e)}},{key:"registerComponent",value:function(e,t){if("function"!=typeof t)throw new Error("Please register a constructor function");if(void 0!==this._components[e])throw new Error("Component "+e+" is already registered");this._components[e]=t}},{key:"toConfig",value:function(e){var t,n,i;if(!1===this.isInitialised)throw new Error("Can't create config, layout not yet initialised");if(e&&!(e instanceof v.a))throw new Error("Root must be a ContentItem");for((t={settings:Object(C.b)({},this.config.settings),dimensions:Object(C.b)({},this.config.dimensions),labels:Object(C.b)({},this.config.labels)}).content=[],(n=function(e,t){var i,o;for(i in t.config)"content"!==i&&(e[i]=t.config[i]);if(t.contentItems.length)for(e.content=[],o=0;o<t.contentItems.length;o++)e.content[o]={},n(e.content[o],t.contentItems[o])})(t,e?{contentItems:[e]}:this.root),this._$reconcilePopoutWindows(),t.openPopouts=[],i=0;i<this.openPopouts.length;i++)t.openPopouts.push(this.openPopouts[i].toConfig());return t.maximisedItemId=this._maximisedItem?"__glMaximised":null,t}},{key:"getComponent",value:function(e){if(void 0===this._components[e])throw new k.a('Unknown component "'+e+'"');return this._components[e]}},{key:"init",value:function(){return!1===this._subWindowsCreated&&(this._createSubWindows(),this._subWindowsCreated=!0),"loading"===document.readyState||null===document.body?void $(document).ready(Object(C.c)(this.init,this)):!0===this.isSubWindow&&!1===this._creationTimeoutPassed?(setTimeout(Object(C.c)(this.init,this),7),void(this._creationTimeoutPassed=!0)):(!0===this.isSubWindow&&this._adjustToWindowMode(),this._setContainer(),this.dropTargetIndicator=new w.a(this.container),this.transitionIndicator=new x.a,this.updateSize(),this._create(this.config),this._bindEvents(),this.isInitialised=!0,this._adjustColumnsResponsive(),void this.emit("initialised"))}},{key:"updateSize",value:function(e,t){2===arguments.length?(this.width=e,this.height=t):(this.width=this.container.width(),this.height=this.container.height()),!0===this.isInitialised&&(this.root.callDownwards("setSize",[this.width,this.height]),this._maximisedItem&&(this._maximisedItem.element.width(this.container.width()),this._maximisedItem.element.height(this.container.height()),this._maximisedItem.callDownwards("setSize")),this._adjustColumnsResponsive())}},{key:"destroy",value:function(){!1===this.isInitialised||(this._onUnload(),$(window).off("resize",this._resizeFunction),$(window).off("unload beforeunload",this._unloadFunction),this.root.callDownwards("_$destroy",[],!0),this.root.contentItems=[],this.tabDropPlaceholder.remove(),this.dropTargetIndicator.destroy(),this.transitionIndicator.destroy(),this.eventHub.destroy(),this._dragSources.forEach(function(e){e._dragListener.destroy(),e._element=null,e._itemConfig=null,e._dragListener=null}),this._dragSources=[])}},{key:"createContentItem",value:function(e,t){var n;if("string"!=typeof e.type)throw new k.a("Missing parameter 'type'",e);if("react-component"===e.type&&(e.type="component",e.componentName="lm-react-component"),!this._typeToItem[e.type])throw n="Unknown type '"+e.type+"'. Valid types are "+Object(C.j)(this._typeToItem).join(","),new k.a(n);return"component"!==e.type||t instanceof g.a||!t||!0===this.isSubWindow&&t instanceof m.a||(e={type:"stack",width:e.width,height:e.height,content:[e]}),new this._typeToItem[e.type](this,e,t)}},{key:"createPopout",value:function(e,t,n,i){var o,s,r,a,l,c,h=e,u=e instanceof v.a,d=this;if(n=n||null,u){for(h=this.toConfig(e).content,n=Object(C.f)(),a=e.parent,l=e;1===a.contentItems.length&&!a.isRoot;)a=a.parent,l=l.parent;a.addId(n),isNaN(i)&&(i=Object(C.g)(l,a.contentItems))}else h instanceof Array||(h=[h]);return!t&&u&&(o=window.screenX||window.screenLeft,s=window.screenY||window.screenTop,t={left:o+(r=e.element.offset()).left,top:s+r.top,width:e.element.width(),height:e.element.height()}),t||u||(t={left:window.screenX||window.screenLeft+20,top:window.screenY||window.screenTop+20,width:500,height:309}),u&&e.remove(),(c=new _.a(h,t,n,i,this)).on("initialised",function(){d.emit("windowOpened",c)}),c.on("closed",function(){d._$reconcilePopoutWindows()}),this.openPopouts.push(c),c}},{key:"createDragSource",value:function(e,t){this.config.settings.constrainDragToContainer=!1;var n=new b.a($(e),t,this);return this._dragSources.push(n),n}},{key:"selectItem",value:function(e,t){if(!0!==this.config.settings.selectionEnabled)throw new Error("Please set selectionEnabled to true to use this feature");e===this.selectedItem||(null!==this.selectedItem&&this.selectedItem.deselect(),e&&!0!==t&&e.select(),this.selectedItem=e,this.emit("selectionChanged",e))}},{key:"_$maximiseItem",value:function(e){null!==this._maximisedItem&&this._$minimiseItem(this._maximisedItem),this._maximisedItem=e,this._maximisedItem.addId("__glMaximised"),e.element.addClass("lm_maximised"),e.element.after(this._maximisePlaceholder),this.root.element.prepend(e.element),e.element.width(this.container.width()),e.element.height(this.container.height()),e.callDownwards("setSize"),this._maximisedItem.emit("maximised"),this.emit("stateChanged")}},{key:"_$minimiseItem",value:function(e){e.element.removeClass("lm_maximised"),e.removeId("__glMaximised"),this._maximisePlaceholder.after(e.element),this._maximisePlaceholder.remove(),e.parent.callDownwards("setSize"),this._maximisedItem=null,e.emit("minimised"),this.emit("stateChanged")}},{key:"_$closeWindow",value:function(){window.setTimeout(function(){window.close()},1)}},{key:"_$getArea",value:function(e,t){var n,i,o=1/0,s=null;for(n=0;n<this._itemAreas.length;n++)e>(i=this._itemAreas[n]).x1&&e<i.x2&&t>i.y1&&t<i.y2&&o>i.surface&&(o=i.surface,s=i);return s}},{key:"_$createRootItemAreas",value:function(){var e={y2:0,x2:0,y1:"y2",x1:"x2"};for(var t in e){var n=this.root._$getArea();n.side=t,n[t]=e[t]?n[e[t]]-50:50,n.surface=(n.x2-n.x1)*(n.y2-n.y1),this._itemAreas.push(n)}}},{key:"_$calculateItemAreas",value:function(){var e,t,n=this._getAllContentItems();if(this._itemAreas=[],1!==n.length){for(this._$createRootItemAreas(),e=0;e<n.length;e++)if(n[e].isStack){if(null===(t=n[e]._$getArea()))continue;if(t instanceof Array)this._itemAreas=this._itemAreas.concat(t);else{this._itemAreas.push(t);var i={};Object(C.b)(i,t),Object(C.b)(i,t.contentItem._contentAreaDimensions.header.highlightArea),i.surface=(i.x2-i.x1)*(i.y2-i.y1),this._itemAreas.push(i)}}}else this._itemAreas.push(this.root._$getArea())}},{key:"_$normalizeContentItem",value:function(e,t){if(!e)throw new Error("No content item defined");if(Object(C.h)(e)&&(e=e()),e instanceof v.a)return e;if($.isPlainObject(e)&&e.type){var n=this.createContentItem(e,t);return n.callDownwards("_$init"),n}throw new Error("Invalid contentItem")}},{key:"_$reconcilePopoutWindows",value:function(){var e,t=[];for(e=0;e<this.openPopouts.length;e++)!1===this.openPopouts[e].getWindow().closed?t.push(this.openPopouts[e]):this.emit("windowClosed",this.openPopouts[e]);this.openPopouts.length!==t.length&&(this.emit("stateChanged"),this.openPopouts=t)}},{key:"_getAllContentItems",value:function(){var e=[];return function t(n){if(e.push(n),n.contentItems instanceof Array)for(var i=0;i<n.contentItems.length;i++)t(n.contentItems[i])}(this.root),e}},{key:"_bindEvents",value:function(){this._isFullPage&&$(window).resize(this._resizeFunction),$(window).on("unload beforeunload",this._unloadFunction)}},{key:"_onResize",value:function(){clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout(Object(C.c)(this.updateSize,this),100)}},{key:"_createConfig",value:function(e){var t=Object(C.d)("gl-window");t&&(this.isSubWindow=!0,e=localStorage.getItem(t),e=JSON.parse(e),e=(new d.a).unminifyConfig(e),localStorage.removeItem(t));return function e(t){for(var n in t)"props"!=n&&"object"==r(t[n])?e(t[n]):"type"==n&&"react-component"===t[n]&&(t.type="component",t.componentName="lm-react-component")}(e=$.extend(!0,{},I.a,e)),!1===e.settings.hasHeaders&&(e.dimensions.headerHeight=0),e}},{key:"_adjustToWindowMode",value:function(){var e=$('<div class="lm_popin" title="'+this.config.labels.popin+'"><div class="lm_icon"></div><div class="lm_bg"></div></div>');e.click(Object(C.c)(function(){this.emit("popIn")},this)),document.title=Object(C.k)(this.config.content[0].title),$("head").append($("body link, body style, template, .gl_keep")),this.container=$("body").html("").css("visibility","visible").append(e),document.body.offsetHeight,window.__glInstance=this}},{key:"_createSubWindows",value:function(){var e,t;for(e=0;e<this.config.openPopouts.length;e++)t=this.config.openPopouts[e],this.createPopout(t.content,t.dimensions,t.parentId,t.indexInParent)}},{key:"_setContainer",value:function(){var e=$(this.container||"body");if(0===e.length)throw new Error("GoldenLayout container not found");if(1<e.length)throw new Error("GoldenLayout more than one container element specified");e[0]===document.body&&(this._isFullPage=!0,$("html, body").css({height:"100%",margin:0,padding:0,overflow:"hidden"})),this.container=e}},{key:"_create",value:function(e){var t;if(!(e.content instanceof Array))throw t=void 0===e.content?"Missing setting 'content' on top level of configuration":"Configuration parameter 'content' must be an array",new k.a(t,e);if(1<e.content.length)throw t="Top level content can't contain more then one element.",new k.a(t,e);this.root=new m.a(this,{content:e.content},this.container),this.root.callDownwards("_$init"),"__glMaximised"===e.maximisedItemId&&this.root.getItemsById(e.maximisedItemId)[0].toggleMaximise()}},{key:"_onUnload",value:function(){if(!0===this.config.settings.closePopoutsOnUnload)for(var e=0;e<this.openPopouts.length;e++)this.openPopouts[e].close()}},{key:"_adjustColumnsResponsive",value:function(){if(this._useResponsiveLayout()&&!this._updatingColumnsResponsive&&this.config.dimensions&&this.config.dimensions.minItemWidth&&0!==this.root.contentItems.length&&this.root.contentItems[0].isRow){this._firstLoad=!1;var e=this.root.contentItems[0].contentItems.length;if(!(1>=e)){var i=this.config.dimensions.minItemWidth;if(!(e*i<=this.width)){this._updatingColumnsResponsive=!0;for(var o,s=n(t(this.width/i),1),r=this.root.contentItems[0],a=this._findAllStackContainers()[0],l=0;l<e-s;l++)o=r.contentItems[r.contentItems.length-1],this._addChildContentItemsToContainer(a,o);this._updatingColumnsResponsive=!1}}}else this._firstLoad=!1}},{key:"_useResponsiveLayout",value:function(){return this.config.settings&&("always"==this.config.settings.responsiveMode||"onload"==this.config.settings.responsiveMode&&this._firstLoad)}},{key:"_addChildContentItemsToContainer",value:function(e,t){"stack"===t.type?t.contentItems.forEach(function(n){e.addChild(n),t.removeChild(n,!0)}):t.contentItems.forEach(Object(C.c)(function(t){this._addChildContentItemsToContainer(e,t)},this))}},{key:"_findAllStackContainers",value:function(){var e=[];return this._findAllStackContainersRecursive(e,this.root),e}},{key:"_findAllStackContainersRecursive",value:function(e,t){t.contentItems.forEach(Object(C.c)(function(t){"stack"==t.type?e.push(t):!t.isComponent&&this._findAllStackContainersRecursive(e,t)},this))}}]),i}();i.a=S},function(e,t,n){e.exports={default:n(41),__esModule:!0}},function(e,t,n){n(42),e.exports=n(2).Object.keys},function(e,t,n){var i=n(43),o=n(15);n(53)("keys",function(){return function(e){return o(i(e))}})},function(e,t,n){var i=n(14);e.exports=function(e){return Object(i(e))}},function(e,t,n){var i=n(16),o=n(17),s=n(47)(!1),r=n(19)("IE_PROTO");e.exports=function(e,t){var n,a=o(e),l=0,c=[];for(n in a)n!=r&&i(a,n)&&c.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~s(c,n)||c.push(n));return c}},function(e,t,n){var i=n(46);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,t,n){var i=n(17),o=n(48),s=n(49);e.exports=function(e){return function(t,n,r){var a,l=i(t),c=o(l.length),h=s(r,c);if(e&&n!=n){for(;c>h;)if((a=l[h++])!=a)return!0}else for(;c>h;h++)if((e||h in l)&&l[h]===n)return e||h||0;return!e&&-1}}},function(t,n,i){var o=i(18);t.exports=function(t){return 0<t?e(o(t),9007199254740991):0}},function(t,i,o){var s=o(18);t.exports=function(t,i){return 0>(t=s(t))?n(t+i,0):e(t,i)}},function(e,t,n){var i=n(2),o=n(4),s="__core-js_shared__",r=o[s]||(o[s]={});(e.exports=function(e,t){return r[e]||(r[e]=void 0===t?{}:t)})("versions",[]).push({version:i.version,mode:n(51)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(e){e.exports=!0},function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+n).toString(36))}},function(e,t,n){var i=n(21),o=n(2),s=n(10);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],r={};r[e]=t(n),i(i.S+i.F*s(function(){n(1)}),"Object",r)}},function(e,t,n){var i=n(55);e.exports=function(e,t,n){return i(e),void 0===t?e:1===n?function(n){return e.call(t,n)}:2===n?function(n,i){return e.call(t,n,i)}:3===n?function(n,i,o){return e.call(t,n,i,o)}:function(){return e.apply(t,arguments)}}},function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var i=n(22),o=n(59);e.exports=n(5)?function(e,t,n){return i.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){e.exports=!n(5)&&!n(10)(function(){return 7!=Object.defineProperty(n(23)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var i=n(9);e.exports=function(e,t){if(!i(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!i(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!i(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!i(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports={default:n(61),__esModule:!0}},function(e,t,n){n(62);var i=n(2).Object;e.exports=function(e,t){return i.create(e,t)}},function(e,t,n){var i=n(21);i(i.S,"Object",{create:n(63)})},function(e,t,n){var i=n(8),o=n(64),s=n(20),r=n(19)("IE_PROTO"),a=function(){},l="prototype",c=function(){var e,t=n(23)("iframe"),i=s.length;for(t.style.display="none",n(65).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),c=e.F;i--;)delete c[l][s[i]];return c()};e.exports=Object.create||function(e,t){var n;return null===e?n=c():(a[l]=i(e),n=new a,a[l]=null,n[r]=e),void 0===t?n:o(n,t)}},function(e,t,n){var i=n(22),o=n(8),s=n(15);e.exports=n(5)?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},function(e,t,n){var i=n(4).document;e.exports=i&&i.documentElement},function(e,t){t.a={isClosable:!0,reorderEnabled:!0,title:""}},function(e,t,n){var i=n(7);t.a=function(){function e(t,n,o){c(this,e),this._isVertical=t,this._size=n,this._grabSize=o<n?n:o,this.element=this._createElement(),this._dragListener=new i.a(this.element)}return s(e,[{key:"on",value:function(e,t,n){this._dragListener.on(e,t,n)}},{key:"_$destroy",value:function(){this.element.remove()}},{key:"_createElement",value:function(){var e=$('<div class="lm_drag_handle"></div>'),t=$('<div class="lm_splitter"></div>');t.append(e);var n=this._grabSize-this._size,i=n/2;return this._isVertical?(e.css("top",-i),e.css("height",this._size+n),t.addClass("lm_vertical"),t.height(this._size)):(e.css("left",-i),e.css("width",this._size+n),t.addClass("lm_horizontal"),t.width(this._size)),t}}]),e}()},function(e,t,n){e.exports={default:n(69),__esModule:!0}},function(e,t,n){var i=n(2),o=i.JSON||(i.JSON={stringify:JSON.stringify});e.exports=function(){return o.stringify.apply(o,arguments)}},function(e,t,n){var i=n(7),o=n(30),r=n(0);t.a=function(){function e(t,n,i){c(this,e),this._element=t,this._itemConfig=n,this._layoutManager=i,this._dragListener=null,this._createDragListener()}return s(e,[{key:"_createDragListener",value:function(){null!==this._dragListener&&this._dragListener.destroy(),this._dragListener=new i.a(this._element),this._dragListener.on("dragStart",this._onDragStart,this),this._dragListener.on("dragStop",this._createDragListener,this)}},{key:"_onDragStart",value:function(e,t){var n=this._itemConfig;Object(r.h)(n)&&(n=n());var i=this._layoutManager._$normalizeContentItem($.extend(!0,{},n)),s=new o.a(e,t,this._dragListener,this._layoutManager,i,null);this._layoutManager.transitionIndicator.transitionElements(this._element,s.element)}}]),e}()},function(e,t){t.a=function(){function e(){c(this,e),this.element=$('<div class="lm_dropTargetIndicator"><div class="lm_inner"></div></div>'),$(document.body).append(this.element)}return s(e,[{key:"destroy",value:function(){this.element.remove()}},{key:"highlight",value:function(e,t,n,i){this.highlightArea({x1:e,y1:t,x2:n,y2:i})}},{key:"highlightArea",value:function(e){this.element.css({left:e.x1,top:e.y1,width:e.x2-e.x1,height:e.y2-e.y1}).show()}},{key:"hide",value:function(){this.element.hide()}}]),e}()},function(e,t,n){var i=n(0);t.a=function(){function e(){c(this,e),this._element=$('<div class="lm_transition_indicator"></div>'),$(document.body).append(this._element),this._toElement=null,this._fromDimensions=null,this._totalAnimationDuration=200,this._animationStartTime=null}return s(e,[{key:"destroy",value:function(){this._element.remove()}},{key:"transitionElements",value:function(){}},{key:"_nextAnimationFrame",value:function(){var e,t=this._measure(this._toElement),n=(Object(i.i)()-this._animationStartTime)/this._totalAnimationDuration,o={};if(1<=n)this._element.hide();else{for(e in t.opacity=0,this._fromDimensions)o[e]=this._fromDimensions[e]+(t[e]-this._fromDimensions[e])*n;this._element.css(o),Object(i.a)(Object(i.c)(this._nextAnimationFrame,this))}}},{key:"_measure",value:function(e){var t=e.offset();return{left:t.left,top:t.top,width:e.outerWidth(),height:e.outerHeight()}}}]),e}()},function(e,t){t.a={openPopouts:[],settings:{hasHeaders:!0,constrainDragToContainer:!0,reorderEnabled:!0,selectionEnabled:!1,popoutWholeStack:!1,blockedPopoutsThrowError:!0,closePopoutsOnUnload:!0,showPopoutIcon:!0,showMaximiseIcon:!0,showCloseIcon:!0,responsiveMode:"onload",tabOverlapAllowance:0,reorderOnTabMenuClick:!0,tabControlOffset:10},dimensions:{borderWidth:5,borderGrabWidth:15,minItemHeight:10,minItemWidth:10,headerHeight:20,dragProxyWidth:300,dragProxyHeight:200},labels:{close:"close",maximise:"maximise",minimise:"minimise",popout:"open in new window",popin:"pop in",tabDropdown:"additional tabs"}}},function(e,t,n){n(75)(n(76))},function(e){e.exports=function(e){function t(e){"undefined"!=typeof console&&(console.error||console.log)("[Script Loader]",e)}try{"undefined"!=typeof execScript&&"undefined"!=typeof attachEvent&&"undefined"==typeof addEventListener?execScript(e):"undefined"==typeof eval?t("EvalError: No eval function available"):eval.call(null,e)}catch(e){t(e)}}},function(e){e.exports="/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\n(function(global, factory) {\n if (typeof define === 'function' && define.amd)\n define(function() { return factory(global) })\n else\n factory(global)\n}(this, function(window) {\n var Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = 'success'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!('type' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on('load error', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort('timeout')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0]\n return mime && ( mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\n }\n\n function appendQuery(url, query) {\n if (query == '') return url\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = 'jsonp'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n ))\n settings.url = appendQuery(settings.url, '_=' + Date.now())\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\n setHeader('Accept', mime || '*/*')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == 'script') (1,eval)(result)\n else if (dataType == 'xml') result = xhr.responseXML\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, 'abort', xhr, settings, deferred)\n return xhr\n }\n\n var async = 'async' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, 'timeout', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = 'POST'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = 'json'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $('<div>').html(response.replace(rscript, \"\")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == \"array\" || (!traditional && type == \"object\"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = \"\"\n this.push(escape(key) + '=' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join('&').replace(/%20/g, '+')\n }\n})(Zepto)\n\n;(function($){\n $.fn.serializeArray = function() {\n var name, type, result = [],\n add = function(value) {\n if (value.forEach) return value.forEach(add)\n result.push({ name: name, value: value })\n }\n if (this[0]) $.each(this[0].elements, function(_, field){\n type = field.type, name = field.name\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\n ((type != 'radio' && type != 'checkbox') || field.checked))\n add($(field).val())\n })\n return result\n }\n\n $.fn.serialize = function(){\n var result = []\n this.serializeArray().forEach(function(elm){\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value))\n })\n return result.join('&')\n }\n\n $.fn.submit = function(callback) {\n if (0 in arguments) this.bind('submit', callback)\n else if (this.length) {\n var event = $.Event('submit')\n this.eq(0).trigger(event)\n if (!event.isDefaultPrevented()) this.get(0).submit()\n }\n return this\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n return Zepto\n}))\n"},function(){!function(e){e.expr={":":{}},e.support={},e.fn.clone=function(){var t=e();return this.each(function(){t.push(this.cloneNode(!0))}),t},["Left","Top"].forEach(function(t,n){function i(e){return function(e){return e&&"object"==(void 0===e?"undefined":r(e))&&"setInterval"in e}(e)?e:!(9!==e.nodeType)&&(e.defaultView||e.parentWindow)}var o="scroll"+t;e.fn[o]=function(t){var s,r;return void 0===t?(s=this[0])?(r=i(s))?"pageXOffset"in r?r[n?"pageYOffset":"pageXOffset"]:r.document.documentElement[o]||r.document.body[o]:s[o]:null:void this.each(function(){if(r=i(this)){var s=n?e(r).scrollLeft():t,a=n?t:e(r).scrollTop();r.scrollTo(s,a)}else this[o]=t})}}),["width","height"].forEach(function(t){var n=t.replace(/./,function(e){return e[0].toUpperCase()});e.fn["inner"+n]=function(e){var n=this;if(n){var i=n[t]();return{width:["left","right"],height:["top","bottom"]}[t].forEach(function(t){i+=parseInt(n.css("padding-"+t),10),e&&(i+=parseInt(n.css("margin-"+t),10))}),i}return null},e.fn["outer"+n]=function(e){var n=this;if(n){var i=n[t]();return{width:["left","right"],height:["top","bottom"]}[t].forEach(function(t){e&&(i+=parseInt(n.css("margin-"+t),10))}),i}return null}}),e.proxy=function(t,n){if("string"==typeof n){var i=t[n];n=t,t=i}if(e.isFunction(t)){var o=Array.prototype.slice.call(arguments,2),s=function(){return t.apply(n,o.concat(Array.prototype.slice.call(arguments)))};return s.guid=t.guid=t.guid||s.guid||e.guid++,s}};var t=String.prototype.trim;e.trim=function(e,n){return!n&&t?t.call(e):(n=defaultToWhiteSpace(n),e.replace(new RegExp("^["+n+"]+|["+n+"]+$","g"),""))};var n=/^(?:body|html)$/i;e.fn.position=function(){if(!this[0])return null;var t=this[0],i=this.offsetParent(),o=this.offset(),s=n.test(i[0].nodeName)?{top:0,left:0}:i.offset();return o.top-=parseFloat(e(t).css("margin-top"))||0,o.left-=parseFloat(e(t).css("margin-left"))||0,s.top+=parseFloat(e(i[0]).css("border-top-width"))||0,s.left+=parseFloat(e(i[0]).css("border-left-width"))||0,{top:o.top-s.top,left:o.left-s.left}},e.fn.offsetParent=function(){var t=e();return this.each(function(){for(var i=this.offsetParent||document.body;i&&!n.test(i.nodeName)&&"static"===e(i).css("position");)i=i.offsetParent;t.push(i)}),t}}(Zepto)}])})}).call(this,n(2)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}}]); //# sourceMappingURL=ui.b.js.map
\ No newline at end of file diff --git a/webAO/ui.b.js.map b/webAO/ui.b.js.map index ee1a2de..f58e332 100644 --- a/webAO/ui.b.js.map +++ b/webAO/ui.b.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./webAO/ui.js","webpack:///./webAO/golden/js/goldenlayout.js","webpack:///(webpack)/buildin/module.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","golden","GoldenLayout","settings","showPopoutIcon","showCloseIcon","dimensions","minItemHeight","content","type","width","componentName","title","componentState","id","height","registerComponent","container","template","document","querySelector","getElement","html","init","e","_typeof","__WEBPACK_AMD_DEFINE_ARRAY__","undefined","__WEBPACK_AMD_DEFINE_RESULT__","__WEBPACK_AMD_DEFINE_FACTORY__","apply","self","Math","min","floor","max","configurable","$","zepto","touches","targetTouches","originalEvent","j","a","push","window","location","hash","match","RegExp","search","substr","split","length","b","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","setTimeout","g","Array","Error","indexOf","Function","concat","slice","arguments","this","Date","now","getTime","f","random","toString","replace","k","trim","Int8Array","_class","_classCallCheck","_mSubscriptions","on","h","fn","ctx","emit","unshift","unbind","splice","off","trigger","version","__e","_o$b","_this","_possibleConstructorReturn","__proto__","getPrototypeOf","config","_extendItemNode","contentItems","parent","isInitialised","isMaximised","isRoot","isRow","isColumn","isStack","isComponent","layoutManager","_pendingEventPropagations","_throttledEvents","_propagateEvent","_createContentItems","_inherits","_createClass","callDownwards","_$destroy","isClosable","removeChild","undisplayChild","_$init","_$normalizeContentItem","element","parentNode","replaceChild","header","tabs","contentItem","createPopout","emitBubblingEvent","preventDefault","_$minimiseItem","_$maximiseItem","selectedItem","selectItem","addClass","removeClass","hasId","getItemsByFilter","_$getItemsByProperty","instance","dropTargetIndicator","highlightArea","addChild","_callOnActiveComponents","hide","updateSize","show","getItemsByType","getActiveContentItem","remove","offset","x1","left","y1","top","x2","y2","surface","setSize","childElementContainer","append","createContentItem","isPropagationStopped","_scheduleEventPropagationToLayoutManager","origin","_propagateEventToLayoutManager","__g","round","_s$a","_this2","_splitterSize","borderWidth","_splitterGrabSize","borderGrabWidth","_isColumn","_dimension","_splitter","_splitterPosition","_splitterMinPosition","_splitterMaxPosition","_createSplitter","after","_isDocked","before","_validateDocking","_calculateRelativeSizes","_setAbsoluteSizes","headerHeight","_docker","docked","size","itemSize","column","first","last","row","position","_","dimension","realSize","toggleClass","_header","dock","_calculateAbsoluteSizes","additionalPixel","itemSizes","totalWidth","totalHeight","_respectMinItemWidth","minItemWidth","_onSplitterDrag","_onSplitterDragStop","_onSplitterDragStart","_setDockable","_$setClosable","minWidth","minHeight","horizontal","vertical","_getItemsForSplitter","_getMinimumDimensions","css","_o$b2","_this3","_timeout","_eElement","_oDocument","_eBody","body","_nButtonCode","_nDelay","_nDistance","_nX","_nY","_nOriginalX","_nOriginalY","_bDragging","_fMove","onMouseMove","_fUp","onMouseUp","_fDown","onMouseDown","button","_getCoordinates","x","y","one","_startDrag","abs","clearTimeout","find","pageX","pageY","TypeError","_class2","_keys","_values","_nextLevel","parseInt","_o$a","_this4","_containerElement","tabDropPlaceholder","_$highlightDropZone","side","_a$a","_this5","_activeContentItem","hasHeaders","popout","labels","maximise","showMaximiseIcon","close","minimise","_dropZones","_dropSegment","_contentAreaDimensions","_dropIndex","_setupHeaderPosition","_$validateClosability","_sided","createTab","_$hide","activeItemIndex","setActiveContentItem","_$show","activeContentItem","removeTab","hideTab","_isClosable","_resetHeaderDropZone","hoverArea","_highlightHeaderDropZone","_highlightBodyDropZone","_$getArea","right","bottom","innerHeight","toggleMaximise","toggle","_side","keys","ceil","isNaN","F","G","u","S","P","B","W","v","virtual","R","U","createElement","_class3","_reactComponent","_originalComponentWillUpdate","_container","_initialState","_reactClass","_getReactClass","_render","_destroy","ReactDOM","render","_getReactComponent","componentWillUpdate","_onUpdate","getState","setState","unmountComponentAtNode","_config","component","getComponent","glEventHub","eventHub","glContainer","extend","props","React","_o$b3","_this6","_layoutManager","_dontPropagateToParent","_childEventSource","_onEventFromThis","_boundOnEventFromChild","_onEventFromChild","isSubWindow","_propagateToParent","_propagateToChildren","__gl","__glArgs","createEvent","opener","initEvent","createEventObject","eventType","eventName","dispatchEvent","fireEvent","openPopouts","getGlInstance","_$onEventFromParent","_class4","_Error","_this7","message","node","_o$b4","_this8","selectionEnabled","_onHeaderClick","tabsContainer","tabDropdownContainer","controlsContainer","_updateTabSizes","tabsMarkedForRemoval","closeButton","dockButton","tabDropdownButton","hideAdditionalTabsDropdown","_hideAdditionalTabsDropdown","mouseup","_lastVisibleTabIndex","_tabControlOffset","tabControlOffset","_createControls","setActive","reorderOnTabMenuClick","_canDestroy","_showAdditionalTabsDropdown","tabDropdown","_getHeaderSetting","_onPopoutClick","attr","popoutWholeStack","target","select","outerWidth","tabOverlapAllowance","tab","outerHeight","z-index","margin-left","_class5","titleElement","closeElement","isActive","setTitle","reorderEnabled","_dragListener","_onDragStart","destroy","_onTabClickFn","_onTabClick","_onCloseClickFn","_onCloseClick","_onCloseMousedown","stopPropagation","_o$b5","_this9","_contentItem","_originalParent","_area","_lastValidArea","_onDrag","_onDrop","_undisplayTree","_$calculateItemAreas","_setDimensions","_minX","_minY","_maxX","_maxY","_width","_height","_setDropPosition","constrainDragToContainer","_updateTree","_$onDrop","_$setParent","dragProxyWidth","dragProxyHeight","_class6","_action","_o$a2","_this10","_element","_$setSize","shown","_$shown","_o$b6","_this11","isHidden","_contentElement","_s$b","_this12","_dimensions","_parentId","_indexInParent","_popoutWindow","_id","_createWindow","screenX","screenLeft","screenY","screenTop","toConfig","parentId","indexInParent","__glInstance","_$closeWindow","getWindow","root","getItemsById","_createUrl","_serializeWindowOptions","innerWidth","menubar","toolbar","personalbar","resizable","scrollbars","status","open","_positionWindow","_onClose","setInterval","_onInitialised","clearInterval","blockedPopoutsThrowError","join","minifyConfig","localStorage","setItem","href","moveTo","focus","popIn","D","w","ES6","_a$b","_this13","_isFullPage","_resizeTimeoutId","_components","lm-react-component","_itemAreas","_resizeFunction","_onResize","_unloadFunction","_onUnload","_maximisedItem","_maximisePlaceholder","_creationTimeoutPassed","_subWindowsCreated","_dragSources","_updatingColumnsResponsive","_firstLoad","_createConfig","transitionIndicator","_typeToItem","stack","unminifyConfig","_$reconcilePopoutWindows","maximisedItemId","_createSubWindows","readyState","ready","_adjustToWindowMode","_setContainer","_create","_bindEvents","_adjustColumnsResponsive","forEach","_itemConfig","addId","deselect","prepend","removeId","Infinity","_getAllContentItems","_$createRootItemAreas","isPlainObject","closed","resize","getItem","JSON","parse","removeItem","popin","click","offsetHeight","margin","padding","overflow","closePopoutsOnUnload","_useResponsiveLayout","_findAllStackContainers","_addChildContentItemsToContainer","responsiveMode","_findAllStackContainersRecursive","default","propertyIsEnumerable","copyright","valueOf","writable","style","display","appendChild","src","contentWindow","write","defineProperties","documentElement","_class7","_isVertical","_size","_grabSize","_createElement","stringify","_class8","_createDragListener","transitionElements","_class9","_class10","_toElement","_fromDimensions","_totalAnimationDuration","_animationStartTime","_measure","opacity","_nextAnimationFrame","console","error","log","execScript","attachEvent","addEventListener","eval","expr",":","support","clone","each","cloneNode","nodeType","defaultView","parentWindow","scrollLeft","scrollTop","scrollTo","toUpperCase","proxy","isFunction","guid","String","defaultToWhiteSpace","offsetParent","test","nodeName","parseFloat","Zepto","webpackPolyfill","deprecate","paths","children"],"mappings":"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","file":"ui.b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import GoldenLayout from \"./golden/js/goldenlayout.js\";\r\n\r\nvar config = {\r\n settings: {\r\n showPopoutIcon: false,\r\n showCloseIcon: false\r\n },\r\n dimensions: {\r\n minItemHeight: 40\r\n },\r\n content: [\r\n {\r\n type: \"row\",\r\n content: [\r\n {\r\n type: \"column\",\r\n width: 40,\r\n content: [\r\n {\r\n type: \"component\",\r\n componentName: \"template\",\r\n title: \"Game\",\r\n componentState: { id: \"client_wrapper\" }\r\n },\r\n {\r\n type: \"component\",\r\n title: \"Miscellaneous\",\r\n height: 5,\r\n componentName: \"template\",\r\n componentState: { id: \"misc\" }\r\n },\r\n ]\r\n },\r\n {\r\n type: \"column\",\r\n content: [\r\n {\r\n type: \"row\",\r\n\t\t\t\t\t\theight: 65,\r\n\t\t\t\t\t\tcontent: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: \"stack\",\r\n\t\t\t\t\t\t\t\tcontent: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttype: \"component\",\r\n\t\t\t\t\t\t\t\t\t\ttitle: \"Main\",\r\n\t\t\t\t\t\t\t\t\t\tcomponentName: \"template\",\r\n\t\t\t\t\t\t\t\t\t\tcomponentState: { id: \"mainmenu\" }\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttype: \"component\",\r\n\t\t\t\t\t\t\t\t\t\ttitle: \"Log\",\r\n\t\t\t\t\t\t\t\t\t\tcomponentName: \"template\",\r\n\t\t\t\t\t\t\t\t\t\tcomponentState: { id: \"log\" }\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: \"component\",\r\n\t\t\t\t\t\t\t\ttitle: \"Server chat\",\r\n\t\t\t\t\t\t\t\twidth: 30,\r\n\t\t\t\t\t\t\t\tcomponentName: \"template\",\r\n\t\t\t\t\t\t\t\tcomponentState: { id: \"ooc\" }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n },\r\n {\r\n type: \"row\",\r\n content: [\r\n {\r\n type: \"component\",\r\n title: \"Music\",\r\n componentName: \"template\",\r\n componentState: { id: \"music\" }\r\n },\r\n {\r\n type: \"stack\",\r\n content: [\r\n {\r\n type: \"component\",\r\n title: \"Settings\",\r\n componentName: \"template\",\r\n componentState: { id: \"client_settings\" }\r\n },\r\n {\r\n type: \"component\",\r\n title: \"About\",\r\n componentName: \"template\",\r\n componentState: { id: \"about\" }\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }]\r\n};\r\n\r\nvar golden = new GoldenLayout(config);\r\ngolden.registerComponent(\"template\", function(container, componentState) {\r\n let template = document.querySelector(`#${componentState.id}`);\r\n container.getElement().html(template.content);\r\n // TODO: support multiple locales\r\n // container.setTitle(document.querySelector(`#${componentState.id} meta[name='frame-title']`).getAttribute(\"content\"));\r\n});\r\ngolden.init();","(function(e,t){'object'==typeof exports&&'object'==typeof module?module.exports=t():'function'==typeof define&&define.amd?define('GoldenLayout',[],t):'object'==typeof exports?exports.GoldenLayout=t():e.GoldenLayout=t()})('undefined'==typeof self?this:self,function(){var e=Math.min,t=Math.floor,n=Math.max;return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e['default']}:function(){return e};return t.d(n,'a',n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p='',t(t.s=35)}([function(e,t,n){'use strict';function o(e){var t=location.hash.match(new RegExp(e+'=([^&]*)'));return t?t[1]:null}t.e=function(e){return $.zepto?e.touches?e.targetTouches[0]:e:e.originalEvent&&e.originalEvent.touches?e.originalEvent.touches[0]:e},t.j=function(e){var t,n;if('function'==typeof a.a)return a()(e);for(n in t=[],e)t.push(n);return t},t.d=function(e){if(window.location.hash)return o(e);if(!window.location.search)return null;var t,n,i=window.location.search.substr(1).split('&'),a={};for(n=0;n<i.length;n++)t=i[n].split('='),a[t[0]]=t[1];return a[e]||null},t.b=function(e,t){for(var n in t)e[n]=t[n];return e},t.a=function(e){return(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)})(function(){e()})},t.g=function(e,t){if(!(t instanceof Array))throw new Error('Haystack is not an Array');if(t.indexOf)return t.indexOf(e);for(var n=0;n<t.length;n++)if(t[n]===e)return n;return-1},n.d(t,'h',function(){return l}),t.c=function(e,t,n){if(void 0!==Function.prototype.bind)return Function.prototype.bind.apply(e,[t].concat(n||[]));var o=function(){var i=(n||[]).concat(Array.prototype.slice.call(arguments,0));return this instanceof o?void e.apply(this,i):e.apply(t,i)};return o.prototype=e.prototype,o},t.i=function(){return'function'==typeof Date.now?Date.now():new Date().getTime()},t.f=function(){return(1e15*Math.random()).toString(36).replace('.','')},t.k=function(e){return $.trim(e.replace(/(<([^>]+)>)/ig,''))};var i=n(40),a=n.n(i),s=n(60),r=n.n(s),l='function'!=typeof /./&&'object'!=typeof Int8Array?function(e){return'function'==typeof e||!1}:function(e){return'[object Function]'===toString.call(e)}},function(e,t,n){'use strict';var o=n(0);const a='__all';t.a=a;t.b=class{constructor(){this._mSubscriptions={},this._mSubscriptions[a]=[],this.on=function(e,t,n){if(!Object(o.h)(t))throw new Error('Tried to listen to event '+e+' with non-function callback '+t);this._mSubscriptions[e]||(this._mSubscriptions[e]=[]),this._mSubscriptions[e].push({fn:t,ctx:n})},this.emit=function(e){var t,n,o;o=Array.prototype.slice.call(arguments,1);var i=this._mSubscriptions[e];if(i)for(i=i.slice(),t=0;t<i.length;t++)n=i[t].ctx||{},i[t].fn.apply(n,o);o.unshift(e);var s=this._mSubscriptions[a].slice();for(t=0;t<s.length;t++)n=s[t].ctx||{},s[t].fn.apply(n,o)},this.unbind=function(e,t,n){if(!this._mSubscriptions[e])throw new Error('No subscribtions to unsubscribe for event '+e);var o,i=!1;for(o=0;o<this._mSubscriptions[e].length;o++)t&&this._mSubscriptions[e][o].fn!==t||n&&n!==this._mSubscriptions[e][o].ctx||(this._mSubscriptions[e].splice(o,1),i=!0);if(!1==i)throw new Error('Nothing to unbind for '+e)},this.off=this.unbind,this.trigger=this.emit}}},function(e){var t=e.exports={version:'2.5.6'};'number'==typeof __e&&(__e=t)},function(e,t,n){'use strict';var o=n(1),i=n(26),a=n(12),s=n(27),r=n(66),l=n(0);class c extends o.b{constructor(e,t,n){super(),this.config=this._extendItemNode(t),this.type=t.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=e,this._pendingEventPropagations={},this._throttledEvents=['stateChanged'],this.on(o.a,this._propagateEvent,this),t.content&&this._createContentItems(t)}setSize(){throw new Error('Abstract Method')}callDownwards(e,t,n,o){var a;for(!0!==n&&!0!==o&&this[e].apply(this,t||[]),a=0;a<this.contentItems.length;a++)this.contentItems[a].callDownwards(e,t,n);!0===n&&!0!==o&&this[e].apply(this,t||[])}removeChild(e,t){var n=Object(l.g)(e,this.contentItems);if(-1===n)throw new Error('Can\\'t remove child item. Unknown content item');!0!==t&&this.contentItems[n]._$destroy(),this.contentItems.splice(n,1),this.config.content.splice(n,1),0<this.contentItems.length?this.callDownwards('setSize'):!(this instanceof a.a)&&!0===this.config.isClosable&&this.parent.removeChild(this)}undisplayChild(e){var t=Object(l.g)(e,this.contentItems);if(-1===t)throw new Error('Can\\'t remove child item. Unknown content item');this instanceof a.a||!0!==this.config.isClosable||this.parent.undisplayChild(this)}addChild(e,t){t===void 0&&(t=this.contentItems.length),this.contentItems.splice(t,0,e),this.config.content===void 0&&(this.config.content=[]),this.config.content.splice(t,0,e.config),e.parent=this,!0===e.parent.isInitialised&&!1===e.isInitialised&&e._$init()}replaceChild(e,t,n){t=this.layoutManager._$normalizeContentItem(t);var o=Object(l.g)(e,this.contentItems),i=e.element[0].parentNode;if(-1===o)throw new Error('Can\\'t replace child. oldChild is not child of this');i.replaceChild(t.element[0],e.element[0]),!0===n&&(e.parent=null,e._$destroy()),this.contentItems[o]=t,t.parent=this,this.isStack&&(this.header.tabs[o].contentItem=t),!0===t.parent.isInitialised&&!1===t.isInitialised&&t._$init(),this.callDownwards('setSize')}remove(){this.parent.removeChild(this)}popout(){var e=this.layoutManager.createPopout(this);return this.emitBubblingEvent('stateChanged'),e}toggleMaximise(t){t&&t.preventDefault(),!0===this.isMaximised?this.layoutManager._$minimiseItem(this):this.layoutManager._$maximiseItem(this),this.isMaximised=!this.isMaximised,this.emitBubblingEvent('stateChanged')}select(){this.layoutManager.selectedItem!==this&&(this.layoutManager.selectItem(this,!0),this.element.addClass('lm_selected'))}deselect(){this.layoutManager.selectedItem===this&&(this.layoutManager.selectedItem=null,this.element.removeClass('lm_selected'))}setTitle(e){this.config.title=e,this.emit('titleChanged',e),this.emit('stateChanged')}hasId(e){if(!this.config.id)return!1;return'string'==typeof this.config.id?this.config.id===e:this.config.id instanceof Array?-1!==Object(l.g)(e,this.config.id):void 0}addId(e){this.hasId(e)||(this.config.id?'string'==typeof this.config.id?this.config.id=[this.config.id,e]:this.config.id instanceof Array&&this.config.id.push(e):this.config.id=e)}removeId(e){if(!this.hasId(e))throw new Error('Id not found');if('string'==typeof this.config.id)delete this.config.id;else if(this.config.id instanceof Array){var t=Object(l.g)(e,this.config.id);this.config.id.splice(t,1)}}getItemsByFilter(e){var t=[],n=function(o){for(var a=0;a<o.contentItems.length;a++)!0===e(o.contentItems[a])&&t.push(o.contentItems[a]),n(o.contentItems[a])};return n(this),t}getItemsById(e){return this.getItemsByFilter(function(t){return t.config.id instanceof Array?-1!==Object(l.g)(e,t.config.id):t.config.id===e})}getItemsByType(e){return this._$getItemsByProperty('type',e)}getComponentsByName(e){var t,n=this._$getItemsByProperty('componentName',e),o=[];for(t=0;t<n.length;t++)o.push(n[t].instance);return o}_$getItemsByProperty(e,t){return this.getItemsByFilter(function(n){return n[e]===t})}_$setParent(e){this.parent=e}_$highlightDropZone(e,t,n){this.layoutManager.dropTargetIndicator.highlightArea(n)}_$onDrop(e){this.addChild(e)}_$hide(){this._callOnActiveComponents('hide'),this.element.hide(),this.layoutManager.updateSize()}_$show(){this._callOnActiveComponents('show'),this.element.show(),this.layoutManager.updateSize()}_callOnActiveComponents(e){var t,n,o=this.getItemsByType('stack');for(n=0;n<o.length;n++)t=o[n].getActiveContentItem(),t&&t.isComponent&&t.container[e]()}_$destroy(){this.emitBubblingEvent('beforeItemDestroyed'),this.callDownwards('_$destroy',[],!0,!0),this.element.remove(),this.emitBubblingEvent('itemDestroyed')}_$getArea(e){e=e||this.element;var t=e.offset(),n=e.width(),o=e.height();return{x1:t.left,y1:t.top,x2:t.left+n,y2:t.top+o,surface:n*o,contentItem:this}}_$init(){var e;for(this.setSize(),e=0;e<this.contentItems.length;e++)this.childElementContainer.append(this.contentItems[e].element);this.isInitialised=!0,this.emitBubblingEvent('itemCreated'),this.emitBubblingEvent(this.type+'Created')}emitBubblingEvent(e){var t=new i.a(e,this);this.emit(e,t)}_createContentItems(e){var t,n;if(!(e.content instanceof Array))throw new s.a('content must be an Array',e);for(n=0;n<e.content.length;n++)t=this.layoutManager.createContentItem(e.content[n],this),this.contentItems.push(t)}_extendItemNode(e){for(var t in r.a)void 0===e[t]&&(e[t]=r.a[t]);return e}_propagateEvent(e,t){t instanceof i.a&&!1===t.isPropagationStopped&&!0===this.isInitialised&&(!1===this.isRoot&&this.parent?this.parent.emit.apply(this.parent,Array.prototype.slice.call(arguments,0)):this._scheduleEventPropagationToLayoutManager(e,t))}_scheduleEventPropagationToLayoutManager(e,t){-1===Object(l.g)(e,this._throttledEvents)?this.layoutManager.emit(e,t.origin):!0!==this._pendingEventPropagations[e]&&(this._pendingEventPropagations[e]=!0,Object(l.a)(Object(l.c)(this._propagateEventToLayoutManager,this,[e,t])))}_propagateEventToLayoutManager(e,t){this._pendingEventPropagations[e]=!1,this.layoutManager.emit(e,t)}}t.a=c},function(e){var t=e.exports='undefined'!=typeof window&&window.Math==Math?window:'undefined'!=typeof self&&self.Math==Math?self:Function('return this')();'number'==typeof __g&&(__g=t)},function(e,t,n){e.exports=!n(10)(function(){return 7!=Object.defineProperty({},'a',{get:function(){return 7}}).a})},function(e,o,i){'use strict';var a=Math.round,s=i(3),r=i(13),l=i(67),c=i(0);class p extends s.a{constructor(e,t,n,o){super(t,n,o),this.isRow=!e,this.isColumn=e,this.element=$('<div class=\"lm_item lm_'+(e?'column':'row')+'\"></div>'),this.childElementContainer=this.element,this._splitterSize=t.config.dimensions.borderWidth,this._splitterGrabSize=t.config.dimensions.borderGrabWidth,this._isColumn=e,this._dimension=e?'height':'width',this._splitter=[],this._splitterPosition=null,this._splitterMinPosition=null,this._splitterMaxPosition=null}addChild(e,t,o){var a,r,l,i;if(e=this.layoutManager._$normalizeContentItem(e,this),void 0===t&&(t=this.contentItems.length),0<this.contentItems.length?(i=this._createSplitter(n(0,t-1)).element,0<t?(this.contentItems[t-1].element.after(i),i.after(e.element),this._isDocked(t-1)&&(this._splitter[t-1].element.hide(),this._splitter[t].element.show())):(this.contentItems[0].element.before(i),i.before(e.element))):this.childElementContainer.append(e.element),s.a.prototype.addChild.call(this,e,t),a=100*(1/this.contentItems.length),!0===o)return void this.emitBubblingEvent('stateChanged');for(l=0;l<this.contentItems.length;l++)this.contentItems[l]===e?e.config[this._dimension]=a:(r=this.contentItems[l].config[this._dimension]*=(100-a)/100,this.contentItems[l].config[this._dimension]=r);this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged'),this._validateDocking()}undisplayChild(e){var t,o=e.config[this._dimension],i=Object(c.g)(e,this.contentItems),a=n(i-1,0);if(-1===i)throw new Error('Can\\'t undisplay child. ContentItem is not child of this Row or Column');this._splitter[a]&&this._splitter[a].element.hide(),a<this._splitter.length&&this._isDocked(a)&&this._splitter[a].element.hide();var r=this._isDocked();for(t=0;t<this.contentItems.length;t++)this.contentItems[t]===e?this.contentItems[t].config[this._dimension]=0:this._isDocked(t)||(this.contentItems[t].config[this._dimension]+=o/(this.contentItems.length-1-r));1===this.contentItems.length&&s.a.prototype.undisplayChild.call(this,e),this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged')}removeChild(e,t){var o,i,a=e.config[this._dimension],r=Object(c.g)(e,this.contentItems),l=n(r-1,0);if(-1===r)throw new Error('Can\\'t remove child. ContentItem is not child of this Row or Column');this._splitter[l]&&(this._splitter[l]._$destroy(),this._splitter.splice(l,1)),l<this._splitter.length&&this._isDocked(l)&&this._splitter[l].element.hide();var p=this._isDocked();for(o=0;o<this.contentItems.length;o++)this.contentItems[o]!==e&&(this._isDocked(o)||(this.contentItems[o].config[this._dimension]+=a/(this.contentItems.length-1-p)));s.a.prototype.removeChild.call(this,e,t),1===this.contentItems.length&&!0===this.config.isClosable?(i=this.contentItems[0],this.contentItems=[],this.parent.replaceChild(this,i,!0),this._validateDocking(this.parent)):(this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged'),this._validateDocking())}replaceChild(e,t){var n=e.config[this._dimension];s.a.prototype.replaceChild.call(this,e,t),t.config[this._dimension]=n,this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged')}setSize(){0<this.contentItems.length&&(this._calculateRelativeSizes(),this._setAbsoluteSizes()),this.emitBubblingEvent('stateChanged'),this.emit('resize')}dock(e,t,o){if(1===this.contentItems.length)throw new Error('Can\\'t dock child when it single');var a=e.config[this._dimension],s=this.layoutManager.config.dimensions.headerHeight,r=Object(c.g)(e,this.contentItems),l=n(r-1,0);if(-1===r)throw new Error('Can\\'t dock child. ContentItem is not child of this Row or Column');var p,i=e._docker&&e._docker.docked;if('undefined'==typeof t||t!=i){if(i){for(this._splitter[l].element.show(),p=0;p<this.contentItems.length;p++){var d=e._docker.size;this.contentItems[p]===e?e.config[this._dimension]=d:(itemSize=this.contentItems[p].config[this._dimension]*=(100-d)/100,this.contentItems[p].config[this._dimension]=itemSize)}e._docker={docked:!1}}else{if(2>this.contentItems.length-this._isDocked())throw new Error('Can\\'t dock child when it is last in '+this.config.type);var m={column:{first:'top',last:'bottom'},row:{first:'left',last:'right'}}[this.config.type][r?'last':'first'];e.header.position()!=m&&e.header.position(m),this._splitter[l]&&this._splitter[l].element.hide();var _=this._isDocked();for(p=0;p<this.contentItems.length;p++)this.contentItems[p]===e?this.contentItems[p].config[this._dimension]=0:this._isDocked(p)||(this.contentItems[p].config[this._dimension]+=a/(this.contentItems.length-1-_));e._docker={dimension:this._dimension,size:a,realSize:e.element[this._dimension]()-s,docked:!0},o&&e.childElementContainer[this._dimension](0)}e.element.toggleClass('lm_docked',e._docker.docked),this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged'),this._validateDocking()}}_$init(){if(!0!==this.isInitialised){var e;for(s.a.prototype._$init.call(this),e=0;e<this.contentItems.length-1;e++)this.contentItems[e].element.after(this._createSplitter(e).element);for(e=0;e<this.contentItems.length;e++)this.contentItems[e]._header&&this.contentItems[e]._header.docked&&this.dock(this.contentItems[e],!0,!0)}}_setAbsoluteSizes(){var e,t=this._calculateAbsoluteSizes();for(e=0;e<this.contentItems.length;e++)0<t.additionalPixel-e&&t.itemSizes[e]++,this._isColumn?(this.contentItems[e].element.width(t.totalWidth),this.contentItems[e].element.height(t.itemSizes[e])):(this.contentItems[e].element.width(t.itemSizes[e]),this.contentItems[e].element.height(t.totalHeight))}_calculateAbsoluteSizes(){var e,n,o,i=(this.contentItems.length-1)*this._splitterSize,a=this.layoutManager.config.dimensions.headerHeight,s=this.element.width(),r=this.element.height(),l=0,c=[];for(this._isColumn?r-=i:s-=i,e=0;e<this.contentItems.length;e++)this._isDocked(e)&&(this._isColumn?r-=a-this._splitterSize:s-=a-this._splitterSize);for(e=0;e<this.contentItems.length;e++)o=this._isColumn?t(r*(this.contentItems[e].config.height/100)):t(s*(this.contentItems[e].config.width/100)),this._isDocked(e)&&(o=a),l+=o,c.push(o);return n=t((this._isColumn?r:s)-l),{itemSizes:c,additionalPixel:n,totalWidth:s,totalHeight:r}}_calculateRelativeSizes(){var e,t=0,n=[],o=this._isColumn?'height':'width';for(e=0;e<this.contentItems.length;e++)void 0===this.contentItems[e].config[o]?n.push(this.contentItems[e]):t+=this.contentItems[e].config[o];if(100===a(t))return void this._respectMinItemWidth();if(100>a(t)&&0<n.length){for(e=0;e<n.length;e++)n[e].config[o]=(100-t)/n.length;return void this._respectMinItemWidth()}if(100<a(t))for(e=0;e<n.length;e++)n[e].config[o]=50,t+=50;for(e=0;e<this.contentItems.length;e++)this.contentItems[e].config[o]=100*(this.contentItems[e].config[o]/t);this._respectMinItemWidth()}_respectMinItemWidth(){var e,t,n,o=this.layoutManager.config.dimensions?this.layoutManager.config.dimensions.minItemWidth||0:0,s=null,r=[],l=0,c=0,p=0,d=0,m=null,_=[];if(!(this._isColumn||!o||1>=this.contentItems.length)){s=this._calculateAbsoluteSizes();for(var g=0;g<this.contentItems.length;g++)m=this.contentItems[g],d=s.itemSizes[g],d<o?(c+=o-d,n={width:o}):(l+=d-o,n={width:d},r.push(n)),_.push(n);if(!(0==c||c>l)){for(e=c/l,p=c,g=0;g<r.length;g++)n=r[g],t=a((n.width-o)*e),p-=t,n.width-=t;for(0!==p&&(_[_.length-1].width-=p),g=0;g<this.contentItems.length;g++)this.contentItems[g].config.width=100*(_[g].width/s.totalWidth)}}}_createSplitter(e){var t;return t=new l.a(this._isColumn,this._splitterSize,this._splitterGrabSize),t.on('drag',Object(c.c)(this._onSplitterDrag,this,[t]),this),t.on('dragStop',Object(c.c)(this._onSplitterDragStop,this,[t]),this),t.on('dragStart',Object(c.c)(this._onSplitterDragStart,this,[t]),this),this._splitter.splice(e,0,t),t}_getItemsForSplitter(e){var t=Object(c.g)(e,this._splitter);return{before:this.contentItems[t],after:this.contentItems[t+1]}}_isDocked(e){if('undefined'==typeof e){for(var t=0,n=0;n<this.contentItems.length;++n)this._isDocked(n)&&t++;return t}return e<this.contentItems.length?this.contentItems[e]._docker&&this.contentItems[e]._docker.docked:void 0}_validateDocking(e){e=e||this;for(var t=1<e.contentItems.length-e._isDocked(),n=0;n<e.contentItems.length;++n)e.contentItems[n]instanceof r.a&&(e.contentItems[n].header._setDockable(e._isDocked(n)||t),e.contentItems[n].header._$setClosable(t))}_getMinimumDimensions(e){for(var t=0,o=0,a=0;a<e.length;++a)t=n(e[a].minWidth||0,t),o=n(e[a].minHeight||0,o);return{horizontal:t,vertical:o}}_onSplitterDragStart(e){var t=this._getItemsForSplitter(e),n=this.layoutManager.config.dimensions[this._isColumn?'minItemHeight':'minItemWidth'],o=this._getMinimumDimensions(t.before.config.content),i=this._isColumn?o.vertical:o.horizontal,a=this._getMinimumDimensions(t.after.config.content),s=this._isColumn?a.vertical:a.horizontal;this._splitterPosition=0,this._splitterMinPosition=-1*(t.before.element[this._dimension]()-(i||n)),this._splitterMaxPosition=t.after.element[this._dimension]()-(s||n)}_onSplitterDrag(e,t,n){var o=this._isColumn?n:t;o>this._splitterMinPosition&&o<this._splitterMaxPosition&&(this._splitterPosition=o,e.element.css(this._isColumn?'top':'left',o))}_onSplitterDragStop(e){var t=this._getItemsForSplitter(e),n=t.before.element[this._dimension](),o=t.after.element[this._dimension](),i=(this._splitterPosition+n)/(n+o),a=t.before.config[this._dimension]+t.after.config[this._dimension];t.before.config[this._dimension]=i*a,t.after.config[this._dimension]=(1-i)*a,e.element.css({top:0,left:0}),Object(c.a)(Object(c.c)(this.callDownwards,this,['setSize']))}}o.a=p},function(e,t,n){'use strict';var o=n(1),i=n(0);class a extends o.b{constructor(e,t){super(),this._timeout=null,this._eElement=$(e),this._oDocument=$(document),this._eBody=$(document.body),this._nButtonCode=t||0,this._nDelay=200,this._nDistance=10,this._nX=0,this._nY=0,this._nOriginalX=0,this._nOriginalY=0,this._bDragging=!1,this._fMove=Object(i.c)(this.onMouseMove,this),this._fUp=Object(i.c)(this.onMouseUp,this),this._fDown=Object(i.c)(this.onMouseDown,this),this._eElement.on('mousedown touchstart',this._fDown)}destroy(){this._eElement.unbind('mousedown touchstart',this._fDown),this._oDocument.unbind('mouseup touchend',this._fUp),this._eElement=null,this._oDocument=null,this._eBody=null}onMouseDown(e){if(e.preventDefault(),0==e.button||'touchstart'===e.type){var t=this._getCoordinates(e);this._nOriginalX=t.x,this._nOriginalY=t.y,this._oDocument.on('mousemove touchmove',this._fMove),this._oDocument.one('mouseup touchend',this._fUp),this._timeout=setTimeout(Object(i.c)(this._startDrag,this),this._nDelay)}}onMouseMove(e){var t=Math.abs;if(null!=this._timeout){e.preventDefault();var n=this._getCoordinates(e);this._nX=n.x-this._nOriginalX,this._nY=n.y-this._nOriginalY,!1===this._bDragging&&(t(this._nX)>this._nDistance||t(this._nY)>this._nDistance)&&(clearTimeout(this._timeout),this._startDrag()),this._bDragging&&this.emit('drag',this._nX,this._nY,e)}}onMouseUp(e){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),!0===this._bDragging&&(this._bDragging=!1,this.emit('dragStop',e,this._nOriginalX+this._nX)))}_startDrag(){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(e){return e=Object(i.e)(e),{x:e.pageX,y:e.pageY}}}t.a=a},function(e,t,n){var o=n(9);e.exports=function(e){if(!o(e))throw TypeError(e+' is not an object!');return e}},function(e){e.exports=function(e){return'object'==typeof e?null!==e:'function'==typeof e}},function(e){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){'use strict';var o=n(0);t.a=class{constructor(){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'],36<this._keys.length)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']}minifyConfig(e){var t={};return this._nextLevel(e,t,'_min'),t}unminifyConfig(e){var t={};return this._nextLevel(e,t,'_max'),t}_nextLevel(e,t,n){var o,i;for(o in e)e instanceof Array&&(o=parseInt(o,10)),e.hasOwnProperty(o)&&(i=this[n](o,this._keys),'object'==typeof e[o]?(t[i]=e[o]instanceof Array?[]:{},this._nextLevel(e[o],t[i],n)):t[i]=this[n](e[o],this._values))}_min(e,t){if('string'==typeof e&&1===e.length)return'___'+e;var n=Object(o.g)(e,t);return-1===n?e:n.toString(36)}_max(e,t){return'string'==typeof e&&1===e.length?t[parseInt(e,36)]:'string'==typeof e&&'___'===e.substr(0,3)?e[3]:e}}},function(e,t,n){'use strict';var o=n(3),i=n(6);class a extends o.a{constructor(e,t,n){super(e,t,null),this.isRoot=!0,this.type='root',this.element=$('<div class=\"lm_goldenlayout lm_item lm_root\"></div>'),this.childElementContainer=this.element,this._containerElement=n,this._containerElement.append(this.element)}addChild(e){if(0<this.contentItems.length)throw new Error('Root node can only have a single child');e=this.layoutManager._$normalizeContentItem(e,this),this.childElementContainer.append(e.element),o.a.prototype.addChild.call(this,e),this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged')}setSize(e,t){e='undefined'==typeof e?this._containerElement.width():e,t='undefined'==typeof t?this._containerElement.height():t,this.element.width(e),this.element.height(t),this.contentItems[0]&&(this.contentItems[0].element.width(e),this.contentItems[0].element.height(t))}_$highlightDropZone(){this.layoutManager.tabDropPlaceholder.remove(),o.a.prototype._$highlightDropZone.apply(this,arguments)}_$onDrop(e,t){var n;if(e.isComponent&&(n=this.layoutManager.createContentItem({type:'stack',header:e.config.header||{}},this),n._$init(),n.addChild(e),e=n),!this.contentItems.length)this.addChild(e);else{('row'===e.config.type||'column'===e.config.type)&&(n=this.layoutManager.createContentItem({type:'stack'},this),n.addChild(e),e=n);var o='x'==t.side[0]?'row':'column',a='x'==t.side[0]?'width':'height',s='2'==t.side[1],r=this.contentItems[0];if(!(r instanceof i.a)||r.type!=o){var l=this.layoutManager.createContentItem({type:o},this);this.replaceChild(r,l),l.addChild(e,s?0:void 0,!0),l.addChild(r,s?void 0:0,!0),r.config[a]=50,e.config[a]=50,l.callDownwards('setSize')}else{var c=r.contentItems[s?0:r.contentItems.length-1];r.addChild(e,s?0:void 0,!0),c.config[a]*=0.5,e.config[a]=c.config[a],r.callDownwards('setSize')}}}}t.a=a},function(t,o,i){'use strict';var a=i(3),s=i(6),r=i(28),l=i(0);class c extends a.a{constructor(e,t,n){super(e,t,n),this.element=$('<div class=\"lm_item lm_stack\"></div>'),this._activeContentItem=null;var o=e.config;this._header={show:!0===o.settings.hasHeaders&&!1!==t.hasHeaders,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&&Object(l.b)(this._header,o.header),t.header&&Object(l.b)(this._header,t.header),t.content&&t.content[0]&&t.content[0].header&&Object(l.b)(this._header,t.content[0].header),this._dropZones={},this._dropSegment=null,this._contentAreaDimensions=null,this._dropIndex=null,this.isStack=!0,this.childElementContainer=$('<div class=\"lm_items\"></div>'),this.header=new r.a(e,this),this.element.on('mouseleave mouseenter',Object(l.c)(function(e){this._docker&&this._docker.docked&&this.childElementContainer[this._docker.dimension]('mouseenter'==e.type?this._docker.realSize:0)},this)),this.element.append(this.header.element),this.element.append(this.childElementContainer),this._setupHeaderPosition(),this._$validateClosability()}dock(e){this._header.dock&&this.parent instanceof s.a&&this.parent.dock(this,e)}setSize(){if('none'!==this.element.css('display')){var e=this._docker&&this._docker.docked,t={width:this.element.width(),height:this.element.height()};this._header.show&&(t[this._sided?'width':'height']-=this.layoutManager.config.dimensions.headerHeight),e&&(t[this._docker.dimension]=this._docker.realSize),e&&'height'!=this._docker.dimension||this.childElementContainer.width(t.width),e&&'width'!=this._docker.dimension||this.childElementContainer.height(t.height);for(var n=0;n<this.contentItems.length;n++)this.contentItems[n].element.width(t.width),this.contentItems[n].element.height(t.height);this.emit('resize'),this.emitBubblingEvent('stateChanged')}}_$init(){var e,t;if(!0!==this.isInitialised){for(a.a.prototype._$init.call(this),e=0;e<this.contentItems.length;e++)this.header.createTab(this.contentItems[e]),this.contentItems[e]._$hide();if(0<this.contentItems.length){if(t=this.contentItems[this.config.activeItemIndex||0],!t)throw new Error('Configured activeItemIndex out of bounds');this.setActiveContentItem(t)}}}setActiveContentItem(e){if(-1===Object(l.g)(e,this.contentItems))throw new Error('contentItem is not a child of this stack');null!==this._activeContentItem&&this._activeContentItem._$hide(),this._activeContentItem=e,this.header.setActiveContentItem(e),e._$show(),this.emit('activeContentItemChanged',e),this.layoutManager.emit('activeContentItemChanged',e),this.emitBubblingEvent('stateChanged')}getActiveContentItem(){return this.header.activeContentItem}addChild(e,t){t>this.contentItems.length&&(t-=1),e=this.layoutManager._$normalizeContentItem(e,this),a.a.prototype.addChild.call(this,e,t),this.childElementContainer.append(e.element),this.header.createTab(e,t),this.setActiveContentItem(e),this.callDownwards('setSize'),this._$validateClosability(),this.parent instanceof s.a&&this.parent._validateDocking(),this.emitBubblingEvent('stateChanged')}removeChild(e,t){var o=Object(l.g)(e,this.contentItems);a.a.prototype.removeChild.call(this,e,t),this.header.removeTab(e),this.header.activeContentItem===e&&(0<this.contentItems.length?this.setActiveContentItem(this.contentItems[n(o-1,0)]):this._activeContentItem=null),this._$validateClosability(),this.parent instanceof s.a&&this.parent._validateDocking(),this.emitBubblingEvent('stateChanged')}undisplayChild(e){if(1<this.contentItems.length){var t=Object(l.g)(e,this.contentItems);e._$hide&&e._$hide(),this.setActiveContentItem(this.contentItems[0===t?t+1:t-1])}else this.header.hideTab(e),e._$hide&&e._$hide(),a.a.prototype.undisplayChild.call(this,e),this.parent instanceof s.a&&this.parent._validateDocking();this.emitBubblingEvent('stateChanged')}_$validateClosability(){var e,t,n;for(e=this.header._isClosable(),n=0,t=this.contentItems.length;n<t&&!!e;n++)e=this.contentItems[n].config.isClosable;this.header._$setClosable(e)}_$destroy(){a.a.prototype._$destroy.call(this),this.header._$destroy(),this.element.off('mouseenter mouseleave')}_$onDrop(e){if('header'===this._dropSegment)return this._resetHeaderDropZone(),void this.addChild(e,this._dropIndex);if('body'===this._dropSegment)return void this.addChild(e);var t,n,o,i='top'===this._dropSegment||'bottom'===this._dropSegment,a='left'===this._dropSegment||'right'===this._dropSegment,s='top'===this._dropSegment||'left'===this._dropSegment,r=i&&this.parent.isColumn||a&&this.parent.isRow,c=i?'column':'row',p=i?'height':'width';e.isComponent&&(n=this.layoutManager.createContentItem({type:'stack',header:e.config.header||{}},this),n._$init(),n.addChild(e),e=n),('row'===e.config.type||'column'===e.config.type)&&(n=this.layoutManager.createContentItem({type:'stack'},this),n.addChild(e),e=n),r?(t=Object(l.g)(this,this.parent.contentItems),this.parent.addChild(e,s?t:t+1,!0),this.config[p]*=0.5,e.config[p]=this.config[p],this.parent.callDownwards('setSize')):(c=i?'column':'row',o=this.layoutManager.createContentItem({type:c},this),this.parent.replaceChild(this,o),o.addChild(e,s?0:void 0,!0),o.addChild(this,s?void 0:0,!0),this.config[p]=50,e.config[p]=50,o.callDownwards('setSize')),this.parent._validateDocking()}_$highlightDropZone(e,t){var n,o;for(n in this._contentAreaDimensions)if(o=this._contentAreaDimensions[n].hoverArea,o.x1<e&&o.x2>e&&o.y1<t&&o.y2>t)return void('header'===n?(this._dropSegment='header',this._highlightHeaderDropZone(this._sided?t:e)):(this._resetHeaderDropZone(),this._highlightBodyDropZone(n)))}_$getArea(){if('none'===this.element.css('display'))return null;var e=a.a.prototype._$getArea,t=e.call(this,this.header.element),n=e.call(this,this.childElementContainer),o=n.x2-n.x1,i=n.y2-n.y1;return(this._contentAreaDimensions={header:{hoverArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2},highlightArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}}},this._activeContentItem&&!1===this._activeContentItem.isComponent)?t: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}},e.call(this,this.element)):(this._contentAreaDimensions.left={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x1+0.25*o,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x1+0.5*o,y2:n.y2}},this._contentAreaDimensions.top={hoverArea:{x1:n.x1+0.25*o,y1:n.y1,x2:n.x1+0.75*o,y2:n.y1+0.5*i},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y1+0.5*i}},this._contentAreaDimensions.right={hoverArea:{x1:n.x1+0.75*o,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1+0.5*o,y1:n.y1,x2:n.x2,y2:n.y2}},this._contentAreaDimensions.bottom={hoverArea:{x1:n.x1+0.25*o,y1:n.y1+0.5*i,x2:n.x1+0.75*o,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1+0.5*i,x2:n.x2,y2:n.y2}},e.call(this,this.element))}_highlightHeaderDropZone(t){var n,o,i,a,s,r,l,c,p,d=this.header.tabs.length,m=!1;if(0===d)return l=this.header.element.offset(),void this.layoutManager.dropTargetIndicator.highlightArea({x1:l.left,x2:l.left+100,y1:l.top+this.header.element.height()-20,y2:l.top+this.header.element.height()});for(n=0;n<d;n++)if(o=this.header.tabs[n].element,s=o.offset(),this._sided?(a=s.top,i=s.left,c=o.height()):(a=s.left,i=s.top,c=o.width()),t>a&&t<a+c){m=!0;break}if(!(!1==m&&t<a)){if(p=a+c/2,t<p?(this._dropIndex=n,o.before(this.layoutManager.tabDropPlaceholder)):(this._dropIndex=e(n+1,d),o.after(this.layoutManager.tabDropPlaceholder)),this._sided){var _=this.layoutManager.tabDropPlaceholder.offset().top;return void this.layoutManager.dropTargetIndicator.highlightArea({x1:i,x2:i+o.innerHeight(),y1:_,y2:_+this.layoutManager.tabDropPlaceholder.width()})}r=this.layoutManager.tabDropPlaceholder.offset().left,this.layoutManager.dropTargetIndicator.highlightArea({x1:r,x2:r+this.layoutManager.tabDropPlaceholder.width(),y1:i,y2:i+o.innerHeight()})}}_resetHeaderDropZone(){this.layoutManager.tabDropPlaceholder.remove()}toggleMaximise(t){this.isMaximised||this.dock(!1),a.a.prototype.toggleMaximise.call(this,t)}_setupHeaderPosition(){var e=0<=['right','left','bottom'].indexOf(this._header.show)&&this._header.show;if(this.header.element.toggle(!!this._header.show),this._side=e,this._sided=0<=['right','left'].indexOf(this._side),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 t=0<=['right','bottom'].indexOf(this._side)?'before':'after';this.header.element[t](this.childElementContainer),this.callDownwards('setSize')}}_highlightBodyDropZone(e){var t=this._contentAreaDimensions[e].highlightArea;this.layoutManager.dropTargetIndicator.highlightArea(t),this._dropSegment=e}}o.a=c},function(e){e.exports=function(e){if(e==void 0)throw TypeError('Can\\'t call method on '+e);return e}},function(e,t,n){var o=n(44),i=n(20);e.exports=Object.keys||function(e){return o(e,i)}},function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,t,n){var o=n(45),i=n(14);e.exports=function(e){return o(i(e))}},function(e){var n=Math.ceil;e.exports=function(e){return isNaN(e=+e)?0:(0<e?t:n)(e)}},function(e,t,n){var o=n(50)('keys'),i=n(52);e.exports=function(e){return o[e]||(o[e]=i(e))}},function(e){e.exports=['constructor','hasOwnProperty','isPrototypeOf','propertyIsEnumerable','toLocaleString','toString','valueOf']},function(e,t,n){var o=n(4),i=n(2),a=n(54),s=n(56),r=n(16),l='prototype',c=function(e,t,n){var p,d,m,_=e&c.F,g=e&c.G,u=e&c.S,f=e&c.P,h=e&c.B,y=e&c.W,v=g?i:i[t]||(i[t]={}),b=v[l],k=g?o:u?o[t]:(o[t]||{})[l];for(p in g&&(n=t),n)d=!_&&k&&void 0!==k[p],d&&r(v,p)||(m=d?k[p]:n[p],v[p]=g&&'function'!=typeof k[p]?n[p]:h&&d?a(m,o):y&&k[p]==m?function(e){var t=function(t,n,o){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n);}return new e(t,n,o)}return e.apply(this,arguments)};return t[l]=e[l],t}(m):f&&'function'==typeof m?a(Function.call,m):m,f&&((v.virtual||(v.virtual={}))[p]=m,e&c.R&&b&&!b[p]&&s(b,p,m)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var o=n(8),i=n(57),a=n(58),s=Object.defineProperty;t.f=n(5)?Object.defineProperty:function(e,t,n){if(o(e),t=a(t,!0),o(n),i)try{return s(e,t,n)}catch(t){}if('get'in n||'set'in n)throw TypeError('Accessors not supported!');return'value'in n&&(e[t]=n.value),e}},function(e,t,n){var o=n(9),i=n(4).document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t){'use strict';t.a=class{constructor(e,t){this._reactComponent=null,this._originalComponentWillUpdate=null,this._container=e,this._initialState=t,this._reactClass=this._getReactClass(),this._container.on('open',this._render,this),this._container.on('destroy',this._destroy,this)}_render(){this._reactComponent=ReactDOM.render(this._getReactComponent(),this._container.getElement()[0]),this._originalComponentWillUpdate=this._reactComponent.componentWillUpdate||function(){},this._reactComponent.componentWillUpdate=this._onUpdate.bind(this),this._container.getState()&&this._reactComponent.setState(this._container.getState())}_destroy(){ReactDOM.unmountComponentAtNode(this._container.getElement()[0]),this._container.off('open',this._render,this),this._container.off('destroy',this._destroy,this)}_onUpdate(e,t){this._container.setState(t),this._originalComponentWillUpdate.call(this._reactComponent,e,t)}_getReactClass(){var e,t=this._container._config.component;if(!t)throw new Error('No react component name. type: react-component needs a field `component`');if(e=this._container.layoutManager.getComponent(t),!e)throw new Error('React component \"'+t+'\" not found. Please register all components with GoldenLayout using `registerComponent(name, component)`');return e}_getReactComponent(){var e={glEventHub:this._container.layoutManager.eventHub,glContainer:this._container},t=$.extend(e,this._container._config.props);return React.createElement(this._reactClass,t)}}},function(e,t,n){'use strict';var o=n(1),i=n(0);class a extends o.b{constructor(e){super(),this._layoutManager=e,this._dontPropagateToParent=null,this._childEventSource=null,this.on(o.a,Object(i.c)(this._onEventFromThis,this)),this._boundOnEventFromChild=Object(i.c)(this._onEventFromChild,this),$(window).on('gl_child_event',this._boundOnEventFromChild)}_onEventFromThis(){var e=Array.prototype.slice.call(arguments);this._layoutManager.isSubWindow&&e[0]!==this._dontPropagateToParent&&this._propagateToParent(e),this._propagateToChildren(e),this._dontPropagateToParent=null,this._childEventSource=null}_$onEventFromParent(e){this._dontPropagateToParent=e[0],this.emit.apply(this,e)}_onEventFromChild(e){this._childEventSource=e.originalEvent.__gl,this.emit.apply(this,e.originalEvent.__glArgs)}_propagateToParent(e){var t,n='gl_child_event';document.createEvent?(t=window.opener.document.createEvent('HTMLEvents'),t.initEvent(n,!0,!0)):(t=window.opener.document.createEventObject(),t.eventType=n),t.eventName=n,t.__glArgs=e,t.__gl=this._layoutManager,document.createEvent?window.opener.dispatchEvent(t):window.opener.fireEvent('on'+t.eventType,t)}_propagateToChildren(e){var t,n;for(n=0;n<this._layoutManager.openPopouts.length;n++)t=this._layoutManager.openPopouts[n].getGlInstance(),t&&t!==this._childEventSource&&t.eventHub._$onEventFromParent(e)}destroy(){$(window).off('gl_child_event',this._boundOnEventFromChild)}}t.a=a},function(e,t){'use strict';t.a=class{constructor(e,t){this.name=e,this.origin=t,this.isPropagationStopped=!1}stopPropagation(){this.isPropagationStopped=!0}}},function(e,t){'use strict';class n extends Error{constructor(e,t){super(),this.name='Configuration Error',this.message=e,this.node=t}}t.a=n},function(e,t,n){'use strict';var o=n(1),a=n(29),i=n(31),s=n(0);class r extends o.b{constructor(e,t){super(),this.layoutManager=e,this.element=$('<div class=\"lm_header\"><ul class=\"lm_tabs\"></ul><ul class=\"lm_controls\"></ul><ul class=\"lm_tabdropdown_list\"></ul></div>'),!0===this.layoutManager.config.settings.selectionEnabled&&(this.element.addClass('lm_selectable'),this.element.on('click touchstart',Object(s.c)(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=t,this.parent.on('resize',this._updateTabSizes,this),this.tabs=[],this.tabsMarkedForRemoval=[],this.activeContentItem=null,this.closeButton=null,this.dockButton=null,this.tabDropdownButton=null,this.hideAdditionalTabsDropdown=Object(s.c)(this._hideAdditionalTabsDropdown,this),$(document).mouseup(this.hideAdditionalTabsDropdown),this._lastVisibleTabIndex=-1,this._tabControlOffset=this.layoutManager.config.settings.tabControlOffset,this._createControls()}createTab(e,t){var n,o;for(o=0;o<this.tabs.length;o++)if(this.tabs[o].contentItem===e)return;return n=new a.a(this,e),0===this.tabs.length?(this.tabs.push(n),void this.tabsContainer.append(n.element)):void(void 0===t&&(t=this.tabs.length),0<t?this.tabs[t-1].element.after(n.element):this.tabs[0].element.before(n.element),this.tabs.splice(t,0,n),this._updateTabSizes())}removeTab(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t]._$destroy(),void this.tabs.splice(t,1);for(t=0;t<this.tabsMarkedForRemoval.length;t++)if(this.tabsMarkedForRemoval[t].contentItem===e)return this.tabsMarkedForRemoval[t]._$destroy(),void this.tabsMarkedForRemoval.splice(t,1);throw new Error('contentItem is not controlled by this header')}hideTab(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t].element.hide(),this.tabsMarkedForRemoval.push(this.tabs[t]),void this.tabs.splice(t,1);throw new Error('contentItem is not controlled by this header')}setActiveContentItem(e){var t,n,o,i;for(t=0;t<this.tabs.length;t++)o=this.tabs[t].contentItem===e,this.tabs[t].setActive(o),!0===o&&(this.activeContentItem=e,this.parent.config.activeItemIndex=t);if(this.layoutManager.config.settings.reorderOnTabMenuClick&&-1!==this._lastVisibleTabIndex&&this.parent.config.activeItemIndex>this._lastVisibleTabIndex){for(i=this.tabs[this.parent.config.activeItemIndex],n=this.parent.config.activeItemIndex;0<n;n--)this.tabs[n]=this.tabs[n-1];this.tabs[0]=i,this.parent.config.activeItemIndex=0}this._updateTabSizes(),this.parent.emitBubblingEvent('stateChanged')}position(e){var t=this.parent._header.show;if(this.parent._docker&&this.parent._docker.docked)throw new Error('Can\\'t change header position in docked stack');return t&&!this.parent._side&&(t='top'),void 0!==e&&this.parent._header.show!=e&&(this.parent._header.show=e,this.parent._setupHeaderPosition()),t}_$setClosable(e){return this._canDestroy=e||1<this.tabs.length,this.closeButton&&this._isClosable()&&(this.closeButton.element[e?'show':'hide'](),!0)}_setDockable(e){return this.dockButton&&this.parent._header&&this.parent._header.dock&&(this.dockButton.element.toggle(!!e),!0)}_$destroy(){this.emit('destroy',this);for(var e=0;e<this.tabs.length;e++)this.tabs[e]._$destroy();$(document).off('mouseup',this.hideAdditionalTabsDropdown),this.element.remove()}_getHeaderSetting(e){if(e in this.parent._header)return this.parent._header[e]}_createControls(){var e,t,n,o,a,r,l,c,p;if(p=Object(s.c)(this._showAdditionalTabsDropdown,this),c=this.layoutManager.config.labels.tabDropdown,this.tabDropdownButton=new i.a(this,c,'lm_tabdropdown',p),this.tabDropdownButton.element.hide(),this.parent._header&&this.parent._header.dock){var d=Object(s.c)(this.parent.dock,this.parent);n=this._getHeaderSetting('dock'),this.dockButton=new i.a(this,n,'lm_dock',d)}this._getHeaderSetting('popout')&&(t=Object(s.c)(this._onPopoutClick,this),n=this._getHeaderSetting('popout'),new i.a(this,n,'lm_popout',t)),this._getHeaderSetting('maximise')&&(r=Object(s.c)(this.parent.toggleMaximise,this.parent),o=this._getHeaderSetting('maximise'),a=this._getHeaderSetting('minimise'),l=new i.a(this,o,'lm_maximise',r),this.parent.on('maximised',function(){l.element.attr('title',a)}),this.parent.on('minimised',function(){l.element.attr('title',o)})),this._isClosable()&&(e=Object(s.c)(this.parent.remove,this.parent),n=this._getHeaderSetting('close'),this.closeButton=new i.a(this,n,'lm_close',e))}_showAdditionalTabsDropdown(){this.tabDropdownContainer.show()}_hideAdditionalTabsDropdown(){this.tabDropdownContainer.hide()}_isClosable(){return this.parent.config.isClosable&&this.layoutManager.config.settings.showCloseIcon}_onPopoutClick(){!0===this.layoutManager.config.settings.popoutWholeStack?this.parent.popout():this.activeContentItem.popout()}_onHeaderClick(e){e.target===this.element[0]&&this.parent.select()}_updateTabSizes(e){if(0!==this.tabs.length){this.tabDropdownButton.element.toggle(!0===e);var t=function(e){return e?'width':'height'};this.element.css(t(!this.parent._sided),''),this.element[t(this.parent._sided)](this.layoutManager.config.dimensions.headerHeight);var n,o,i,a,s,r=this.element.outerWidth()-this.controlsContainer.outerWidth()-this._tabControlOffset,l=0,c=0,p=0,d=this.layoutManager.config.settings.tabOverlapAllowance,m=!1,_=this.activeContentItem?this.tabs.indexOf(this.activeContentItem.tab):0,g=this.tabs[_];for(this.parent._sided&&(r=this.element.outerHeight()-this.controlsContainer.outerHeight()-this._tabControlOffset),this._lastVisibleTabIndex=-1,o=0;o<this.tabs.length;o++)if(n=this.tabs[o].element,this.tabsContainer.append(n),s=n.outerWidth()+parseInt(n.css('margin-right'),10),l+=s,c=_<=o?l:l+g.element.outerWidth()+parseInt(g.element.css('margin-right'),10),c>r){if(!!m)o===_&&(n.css({\"z-index\":'auto',\"margin-left\":''}),this.tabsContainer.append(n));else if(p=0<_&&_<=o?(c-r)/(o-1):(c-r)/o,p<d){for(i=0;i<=o;i++)a=i!==_&&0!==i?'-'+p+'px':'',this.tabs[i].element.css({\"z-index\":o-i,\"margin-left\":a});this._lastVisibleTabIndex=o,this.tabsContainer.append(n)}else m=!0;if(m&&o!==_)if(e)n.css({\"z-index\":'auto',\"margin-left\":''}),this.tabDropdownContainer.append(n);else return void this._updateTabSizes(!0)}else this._lastVisibleTabIndex=o,n.css({\"z-index\":'auto',\"margin-left\":''}),this.tabsContainer.append(n)}}}t.a=r},function(e,t,n){'use strict';var o=n(7),i=n(30),a=n(0);t.a=class{constructor(e,t){this.header=e,this.contentItem=t,this.element=$('<li class=\"lm_tab\"><i class=\"lm_left\"></i><span class=\"lm_title\"></span><div class=\"lm_close_tab\"></div><i class=\"lm_right\"></i></li>'),this.titleElement=this.element.find('.lm_title'),this.closeElement=this.element.find('.lm_close_tab'),this.closeElement[t.config.isClosable?'show':'hide'](),this.isActive=!1,this.setTitle(t.config.title),this.contentItem.on('titleChanged',this.setTitle,this),this._layoutManager=this.contentItem.layoutManager,!0===this._layoutManager.config.settings.reorderEnabled&&!0===t.config.reorderEnabled&&(this._dragListener=new o.a(this.element),this._dragListener.on('dragStart',this._onDragStart,this),this.contentItem.on('destroy',this._dragListener.destroy,this._dragListener)),this._onTabClickFn=Object(a.c)(this._onTabClick,this),this._onCloseClickFn=Object(a.c)(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))}setTitle(e){this.element.attr('title',Object(a.k)(e)),this.titleElement.html(e)}setActive(e){e===this.isActive||(this.isActive=e,e?this.element.addClass('lm_active'):this.element.removeClass('lm_active'))}_$destroy(){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(e,t){return this.header._canDestroy?void(!0===this.contentItem.parent.isMaximised&&this.contentItem.parent.toggleMaximise(),new i.a(e,t,this._dragListener,this._layoutManager,this.contentItem,this.header.parent)):null}_onTabClick(e){if(0===e.button||'touchstart'===e.type){var t=this.header.parent.getActiveContentItem();this.contentItem!==t&&this.header.parent.setActiveContentItem(this.contentItem)}else 1===e.button&&this.contentItem.config.isClosable&&this._onCloseClick(e)}_onCloseClick(e){e.stopPropagation();this.header._canDestroy&&this.header.parent.removeChild(this.contentItem)}_onCloseMousedown(e){e.stopPropagation()}}},function(e,t,n){'use strict';var o=n(1),i=n(0);class a extends o.b{constructor(e,t,n,o,a,s){super(),this._dragListener=n,this._layoutManager=o,this._contentItem=a,this._originalParent=s,this._area=null,this._lastValidArea=null,this._dragListener.on('drag',this._onDrag,this),this._dragListener.on('dragStop',this._onDrop,this),this.element=$('<div class=\"lm_dragProxy\"><div class=\"lm_header\"><ul class=\"lm_tabs\"><li class=\"lm_tab lm_active\"><i class=\"lm_left\"></i><span class=\"lm_title\"></span><i class=\"lm_right\"></i></li></ul></div><div class=\"lm_content\"></div></div>'),s&&s._side&&(this._sided=s._sided,this.element.addClass('lm_'+s._side),0<=['right','bottom'].indexOf(s._side)&&this.element.find('.lm_content').after(this.element.find('.lm_header'))),this.element.css({left:e,top:t}),this.element.find('.lm_tab').attr('title',Object(i.k)(this._contentItem.config.title)),this.element.find('.lm_title').html(this._contentItem.config.title),this.childElementContainer=this.element.find('.lm_content'),this.childElementContainer.append(a.element),this._undisplayTree(),this._layoutManager._$calculateItemAreas(),this._setDimensions(),$(document.body).append(this.element);var r=this._layoutManager.container.offset();this._minX=r.left,this._minY=r.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(e,t)}_onDrag(e,t,n){n=Object(i.e)(n);var o=n.pageX,a=n.pageY,s=o>this._minX&&o<this._maxX&&a>this._minY&&a<this._maxY;(s||!0!==this._layoutManager.config.settings.constrainDragToContainer)&&this._setDropPosition(o,a)}_setDropPosition(e,t){this.element.css({left:e,top:t}),this._area=this._layoutManager._$getArea(e,t),null!==this._area&&(this._lastValidArea=this._area,this._area.contentItem._$highlightDropZone(e,t,this._area))}_onDrop(){this._updateTree(),this._layoutManager.dropTargetIndicator.hide(),null===this._area?null===this._lastValidArea?this._originalParent?this._originalParent.addChild(this._contentItem):this._contentItem._$destroy():this._lastValidArea.contentItem._$onDrop(this._contentItem,this._lastValidArea):this._area.contentItem._$onDrop(this._contentItem,this._area),this.element.remove(),this._layoutManager.emit('itemDropped',this._contentItem)}_undisplayTree(){this._contentItem.parent&&this._contentItem.parent.undisplayChild(this._contentItem)}_updateTree(){this._contentItem.parent&&this._contentItem.parent.removeChild(this._contentItem,!0),this._contentItem._$setParent(this)}_setDimensions(){var e=this._layoutManager.config.dimensions,t=e.dragProxyWidth,n=e.dragProxyHeight;this.element.width(t),this.element.height(n),t-=this._sided?e.headerHeight:0,n-=this._sided?0:e.headerHeight,this.childElementContainer.width(t),this.childElementContainer.height(n),this._contentItem.element.width(t),this._contentItem.element.height(n),this._contentItem.callDownwards('_$show'),this._contentItem.callDownwards('setSize')}}t.a=a},function(e,t){'use strict';t.a=class{constructor(e,t,n,o){this._header=e,this.element=$('<li class=\"'+n+'\" title=\"'+t+'\"></li>'),this._header.on('destroy',this._$destroy,this),this._action=o,this.element.on('click touchstart',this._action),this._header.controlsContainer.append(this.element)}_$destroy(){this.element.off(),this.element.remove()}}},function(e,t,n){'use strict';var o=n(3),i=n(33);class a extends o.a{constructor(e,t,n){super(e,t,n);var o=e.getComponent(this.config.componentName),a=$.extend(!0,{},this.config.componentState||{});a.componentName=this.config.componentName,this.componentName=this.config.componentName,''===this.config.title&&(this.config.title=this.config.componentName),this.isComponent=!0,this.container=new i.a(this.config,this,e),this.instance=new o(this.container,a),this.element=this.container._element}close(){this.parent.removeChild(this)}setSize(){'none'!==this.element.css('display')&&this.container._$setSize(this.element.width(),this.element.height())}_$init(){o.a.prototype._$init.call(this),this.container.emit('open')}_$hide(){this.container.hide(),o.a.prototype._$hide.call(this)}_$show(){this.container.show(),o.a.prototype._$show.call(this)}_$shown(){this.container.shown(),o.a.prototype._$shown.call(this)}_$destroy(){this.container.emit('destroy',this),o.a.prototype._$destroy.call(this)}_$getArea(){return null}}t.a=a},function(e,t,n){'use strict';var o=n(1);class i extends o.b{constructor(e,t,n){super(),this.width=null,this.height=null,this.title=e.componentName,this.parent=t,this.layoutManager=n,this.isHidden=!1,this._config=e,this._element=$('<div class=\"lm_item_container\"><div class=\"lm_content\"></div></div>'),this._contentElement=this._element.find('.lm_content')}getElement(){return this._contentElement}hide(){this.emit('hide'),this.isHidden=!0,this._element.hide()}show(){this.emit('show'),this.isHidden=!1,this._element.show(),(0!=this.height||0!=this.width)&&this.emit('shown')}setSize(e,t){for(var n,o,a,s,r,l,i=this.parent,c=this;!i.isColumn&&!i.isRow;)if(c=i,i=i.parent,i.isRoot)return!1;for(a=i.isColumn?'height':'width',s='height'===a?t:e,n=this[a]*(1/(c.config[a]/100)),o=100*(s/n),r=(c.config[a]-o)/(i.contentItems.length-1),l=0;l<i.contentItems.length;l++)i.contentItems[l]===c?i.contentItems[l].config[a]=o:i.contentItems[l].config[a]+=r;return i.callDownwards('setSize'),!0}close(){this._config.isClosable&&(this.emit('close'),this.parent.close())}getState(){return this._config.componentState}extendState(e){this.setState($.extend(!0,this.getState(),e))}setState(e){this._config.componentState=e,this.parent.emitBubblingEvent('stateChanged')}setTitle(e){this.parent.setTitle(e)}_$setSize(e,t){(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,$.zepto?this._contentElement.width(e):this._contentElement.outerWidth(e),$.zepto?this._contentElement.height(t):this._contentElement.outerHeight(t),this.emit('resize'))}}t.a=i},function(e,n,o){'use strict';var i=o(68),a=o.n(i),s=o(1),r=o(11),l=o(0);class c extends s.b{constructor(e,t,n,o,i){super(),this.isInitialised=!1,this._config=e,this._dimensions=t,this._parentId=n,this._indexInParent=o,this._layoutManager=i,this._popoutWindow=null,this._id=null,this._createWindow()}toConfig(){if(!1===this.isInitialised)throw new Error('Can\\'t create config, layout not yet initialised');return{dimensions:{width:this.getGlInstance().width,height:this.getGlInstance().height,left:this._popoutWindow.screenX||this._popoutWindow.screenLeft,top:this._popoutWindow.screenY||this._popoutWindow.screenTop},content:this.getGlInstance().toConfig().content,parentId:this._parentId,indexInParent:this._indexInParent}}getGlInstance(){return this._popoutWindow.__glInstance}getWindow(){return this._popoutWindow}close(){if(this.getGlInstance())this.getGlInstance()._$closeWindow();else try{this.getWindow().close()}catch(t){}}popIn(){var e,t,n=this._indexInParent;this._parentId&&(e=$.extend(!0,{},this.getGlInstance().toConfig()).content[0],t=this._layoutManager.root.getItemsById(this._parentId)[0],!t&&(t=0<this._layoutManager.root.contentItems.length?this._layoutManager.root.contentItems[0]:this._layoutManager.root,n=0)),t.addChild(e,this._indexInParent),this.close()}_createWindow(){var e,n=this._createUrl(),o=t(1e6*Math.random()).toString(36),i=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,o,i),!this._popoutWindow)if(!0===this._layoutManager.config.settings.blockedPopoutsThrowError){var a=new Error('Popout blocked');throw a.type='popoutBlocked',a}else return;$(this._popoutWindow).on('load',Object(l.c)(this._positionWindow,this)).on('unload beforeunload',Object(l.c)(this._onClose,this)),e=setInterval(Object(l.c)(function(){this._popoutWindow.__glInstance&&this._popoutWindow.__glInstance.isInitialised&&(this._onInitialised(),clearInterval(e))},this),10)}_serializeWindowOptions(e){var t,n=[];for(t in e)n.push(t+'='+e[t]);return n.join(',')}_createUrl(){var e,t={content:this._config},n='gl-window-config-'+Object(l.f)();t=new r.a().minifyConfig(t);try{localStorage.setItem(n,a()(t))}catch(t){throw new Error('Error while writing to localStorage '+t.toString())}return e=document.location.href.split('?'),1===e.length?e[0]+'?gl-window='+n:document.location.href+'&gl-window='+n}_positionWindow(){this._popoutWindow.moveTo(this._dimensions.left,this._dimensions.top),this._popoutWindow.focus()}_onInitialised(){this.isInitialised=!0,this.getGlInstance().on('popIn',this.popIn,this),this.emit('initialised')}_onClose(){setTimeout(Object(l.c)(this.emit,this,['closed']),50)}}n.a=c},function(e,t,n){'use strict';Object.defineProperty(t,'__esModule',{value:!0});var o=n(36),i=n.n(o),a=n(37),s=n.n(a),r=n(38),l=n.n(r),c=n(39);n.d(t,'default',function(){return c.a});var p=n(33);n.d(t,'ItemContainer',function(){return p.a});var d=n(34);n.d(t,'BrowserPopout',function(){return d.a});var m=n(28);n.d(t,'Header',function(){return m.a});var _=n(31);n.d(t,'HeaderButton',function(){return _.a});var g=n(29);n.d(t,'Tab',function(){return g.a});var u=n(32);n.d(t,'Component',function(){return u.a});var f=n(12);n.d(t,'Root',function(){return f.a});var h=n(6);n.d(t,'RowOrColumn',function(){return h.a});var y=n(13);n.d(t,'Stack',function(){return y.a});var v=n(26);n.d(t,'BubblingEvent',function(){return v.a});var b=n(11);n.d(t,'ConfigMinifier',function(){return b.a});var k=n(7);n.d(t,'DragListener',function(){return k.a});var x=n(1);n.d(t,'EventEmitter',function(){return x.b});var D=n(25);n.d(t,'EventHub',function(){return D.a});var w=n(24);n.d(t,'ReactComponentHandler',function(){return w.a}),{}.ES6&&(n(74),n(77))},function(){},function(){},function(){},function(e,o,i){'use strict';var a=i(1),s=i(24),r=i(11),l=i(25),c=i(12),p=i(6),d=i(13),m=i(32),_=i(3),g=i(34),u=i(70),f=i(71),h=i(72),y=i(27),v=i(73),b=i(0);class k extends a.b{constructor(e,t){if(!$){var n='jQuery is missing as dependency for GoldenLayout. ';throw n+='Please either expose $ on GoldenLayout\\'s scope (e.g. window) or add \"jquery\" to ',n+='your paths when using RequireJS/AMD',new Error(n)}super(),this.isInitialised=!1,this._isFullPage=!1,this._resizeTimeoutId=null,this._components={\"lm-react-component\":s.a},this._itemAreas=[],this._resizeFunction=Object(b.c)(this._onResize,this),this._unloadFunction=Object(b.c)(this._onUnload,this),this._maximisedItem=null,this._maximisePlaceholder=$('<div class=\"lm_maximise_place\"></div>'),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 l.a(this),this.config=this._createConfig(e),this.container=t,this.dropTargetIndicator=null,this.transitionIndicator=null,this.tabDropPlaceholder=$('<div class=\"lm_drop_tab_placeholder\"></div>'),!0===this.isSubWindow&&$('body').css('visibility','hidden'),this._typeToItem={column:Object(b.c)(p.a,this,[!0]),row:Object(b.c)(p.a,this,[!1]),stack:d.a,component:m.a}}minifyConfig(e){return new r.a().minifyConfig(e)}unminifyConfig(e){return new r.a().unminifyConfig(e)}registerComponent(e,t){if('function'!=typeof t)throw new Error('Please register a constructor function');if(void 0!==this._components[e])throw new Error('Component '+e+' is already registered');this._components[e]=t}toConfig(e){var t,n,o;if(!1===this.isInitialised)throw new Error('Can\\'t create config, layout not yet initialised');if(e&&!(e instanceof _.a))throw new Error('Root must be a ContentItem');for(t={settings:Object(b.b)({},this.config.settings),dimensions:Object(b.b)({},this.config.dimensions),labels:Object(b.b)({},this.config.labels)},t.content=[],n=function(e,t){var o,a;for(o in t.config)'content'!==o&&(e[o]=t.config[o]);if(t.contentItems.length)for(e.content=[],a=0;a<t.contentItems.length;a++)e.content[a]={},n(e.content[a],t.contentItems[a])},e?n(t,{contentItems:[e]}):n(t,this.root),this._$reconcilePopoutWindows(),t.openPopouts=[],o=0;o<this.openPopouts.length;o++)t.openPopouts.push(this.openPopouts[o].toConfig());return t.maximisedItemId=this._maximisedItem?'__glMaximised':null,t}getComponent(e){if(this._components[e]===void 0)throw new y.a('Unknown component \"'+e+'\"');return this._components[e]}init(){return!1===this._subWindowsCreated&&(this._createSubWindows(),this._subWindowsCreated=!0),'loading'===document.readyState||null===document.body?void $(document).ready(Object(b.c)(this.init,this)):!0===this.isSubWindow&&!1===this._creationTimeoutPassed?(setTimeout(Object(b.c)(this.init,this),7),void(this._creationTimeoutPassed=!0)):void(!0===this.isSubWindow&&this._adjustToWindowMode(),this._setContainer(),this.dropTargetIndicator=new f.a(this.container),this.transitionIndicator=new h.a,this.updateSize(),this._create(this.config),this._bindEvents(),this.isInitialised=!0,this._adjustColumnsResponsive(),this.emit('initialised'))}updateSize(e,t){2===arguments.length?(this.width=e,this.height=t):(this.width=this.container.width(),this.height=this.container.height()),!0===this.isInitialised&&(this.root.callDownwards('setSize',[this.width,this.height]),this._maximisedItem&&(this._maximisedItem.element.width(this.container.width()),this._maximisedItem.element.height(this.container.height()),this._maximisedItem.callDownwards('setSize')),this._adjustColumnsResponsive())}destroy(){!1===this.isInitialised||(this._onUnload(),$(window).off('resize',this._resizeFunction),$(window).off('unload beforeunload',this._unloadFunction),this.root.callDownwards('_$destroy',[],!0),this.root.contentItems=[],this.tabDropPlaceholder.remove(),this.dropTargetIndicator.destroy(),this.transitionIndicator.destroy(),this.eventHub.destroy(),this._dragSources.forEach(function(e){e._dragListener.destroy(),e._element=null,e._itemConfig=null,e._dragListener=null}),this._dragSources=[])}createContentItem(e,t){var n,o;if('string'!=typeof e.type)throw new y.a('Missing parameter \\'type\\'',e);if('react-component'===e.type&&(e.type='component',e.componentName='lm-react-component'),!this._typeToItem[e.type])throw n='Unknown type \\''+e.type+'\\'. Valid types are '+Object(b.j)(this._typeToItem).join(','),new y.a(n);return'component'!==e.type||t instanceof d.a||!t||!0===this.isSubWindow&&t instanceof c.a||(e={type:'stack',width:e.width,height:e.height,content:[e]}),o=new this._typeToItem[e.type](this,e,t),o}createPopout(e,t,n,o){var i,a,s,r,l,c,p=e,d=e instanceof _.a,m=this;if(n=n||null,d){for(p=this.toConfig(e).content,n=Object(b.f)(),r=e.parent,l=e;1===r.contentItems.length&&!r.isRoot;)r=r.parent,l=l.parent;r.addId(n),isNaN(o)&&(o=Object(b.g)(l,r.contentItems))}else p instanceof Array||(p=[p]);return!t&&d&&(i=window.screenX||window.screenLeft,a=window.screenY||window.screenTop,s=e.element.offset(),t={left:i+s.left,top:a+s.top,width:e.element.width(),height:e.element.height()}),t||d||(t={left:window.screenX||window.screenLeft+20,top:window.screenY||window.screenTop+20,width:500,height:309}),d&&e.remove(),c=new g.a(p,t,n,o,this),c.on('initialised',function(){m.emit('windowOpened',c)}),c.on('closed',function(){m._$reconcilePopoutWindows()}),this.openPopouts.push(c),c}createDragSource(e,t){this.config.settings.constrainDragToContainer=!1;var n=new u.a($(e),t,this);return this._dragSources.push(n),n}selectItem(e,t){if(!0!==this.config.settings.selectionEnabled)throw new Error('Please set selectionEnabled to true to use this feature');e===this.selectedItem||(null!==this.selectedItem&&this.selectedItem.deselect(),e&&!0!==t&&e.select(),this.selectedItem=e,this.emit('selectionChanged',e))}_$maximiseItem(e){null!==this._maximisedItem&&this._$minimiseItem(this._maximisedItem),this._maximisedItem=e,this._maximisedItem.addId('__glMaximised'),e.element.addClass('lm_maximised'),e.element.after(this._maximisePlaceholder),this.root.element.prepend(e.element),e.element.width(this.container.width()),e.element.height(this.container.height()),e.callDownwards('setSize'),this._maximisedItem.emit('maximised'),this.emit('stateChanged')}_$minimiseItem(e){e.element.removeClass('lm_maximised'),e.removeId('__glMaximised'),this._maximisePlaceholder.after(e.element),this._maximisePlaceholder.remove(),e.parent.callDownwards('setSize'),this._maximisedItem=null,e.emit('minimised'),this.emit('stateChanged')}_$closeWindow(){window.setTimeout(function(){window.close()},1)}_$getArea(e,t){var n,o,i=Infinity,a=null;for(n=0;n<this._itemAreas.length;n++)o=this._itemAreas[n],e>o.x1&&e<o.x2&&t>o.y1&&t<o.y2&&i>o.surface&&(i=o.surface,a=o);return a}_$createRootItemAreas(){var e=50,t={y2:0,x2:0,y1:'y2',x1:'x2'};for(var n in t){var o=this.root._$getArea();o.side=n,o[n]=t[n]?o[t[n]]-e:e,o.surface=(o.x2-o.x1)*(o.y2-o.y1),this._itemAreas.push(o)}}_$calculateItemAreas(){var e,t,n=this._getAllContentItems();if(this._itemAreas=[],1===n.length)return void this._itemAreas.push(this.root._$getArea());for(this._$createRootItemAreas(),e=0;e<n.length;e++)if(n[e].isStack)if(t=n[e]._$getArea(),null===t)continue;else if(t instanceof Array)this._itemAreas=this._itemAreas.concat(t);else{this._itemAreas.push(t);var o={};Object(b.b)(o,t),Object(b.b)(o,t.contentItem._contentAreaDimensions.header.highlightArea),o.surface=(o.x2-o.x1)*(o.y2-o.y1),this._itemAreas.push(o)}}_$normalizeContentItem(e,t){if(!e)throw new Error('No content item defined');if(Object(b.h)(e)&&(e=e()),e instanceof _.a)return e;if($.isPlainObject(e)&&e.type){var n=this.createContentItem(e,t);return n.callDownwards('_$init'),n}throw new Error('Invalid contentItem')}_$reconcilePopoutWindows(){var e,t=[];for(e=0;e<this.openPopouts.length;e++)!1===this.openPopouts[e].getWindow().closed?t.push(this.openPopouts[e]):this.emit('windowClosed',this.openPopouts[e]);this.openPopouts.length!==t.length&&(this.emit('stateChanged'),this.openPopouts=t)}_getAllContentItems(){var e=[],t=function(n){if(e.push(n),n.contentItems instanceof Array)for(var o=0;o<n.contentItems.length;o++)t(n.contentItems[o])};return t(this.root),e}_bindEvents(){this._isFullPage&&$(window).resize(this._resizeFunction),$(window).on('unload beforeunload',this._unloadFunction)}_onResize(){clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout(Object(b.c)(this.updateSize,this),100)}_createConfig(e){var t=Object(b.d)('gl-window');t&&(this.isSubWindow=!0,e=localStorage.getItem(t),e=JSON.parse(e),e=new r.a().unminifyConfig(e),localStorage.removeItem(t)),e=$.extend(!0,{},v.a,e);var n=function(e){for(var t in e)'props'!=t&&'object'==typeof e[t]?n(e[t]):'type'==t&&'react-component'===e[t]&&(e.type='component',e.componentName='lm-react-component')};return n(e),!1===e.settings.hasHeaders&&(e.dimensions.headerHeight=0),e}_adjustToWindowMode(){var e=$('<div class=\"lm_popin\" title=\"'+this.config.labels.popin+'\"><div class=\"lm_icon\"></div><div class=\"lm_bg\"></div></div>');e.click(Object(b.c)(function(){this.emit('popIn')},this)),document.title=Object(b.k)(this.config.content[0].title),$('head').append($('body link, body style, template, .gl_keep')),this.container=$('body').html('').css('visibility','visible').append(e);document.body.offsetHeight;window.__glInstance=this}_createSubWindows(){var e,t;for(e=0;e<this.config.openPopouts.length;e++)t=this.config.openPopouts[e],this.createPopout(t.content,t.dimensions,t.parentId,t.indexInParent)}_setContainer(){var e=$(this.container||'body');if(0===e.length)throw new Error('GoldenLayout container not found');if(1<e.length)throw new Error('GoldenLayout more than one container element specified');e[0]===document.body&&(this._isFullPage=!0,$('html, body').css({height:'100%',margin:0,padding:0,overflow:'hidden'})),this.container=e}_create(e){var t;if(!(e.content instanceof Array))throw t=void 0===e.content?'Missing setting \\'content\\' on top level of configuration':'Configuration parameter \\'content\\' must be an array',new y.a(t,e);if(1<e.content.length)throw t='Top level content can\\'t contain more then one element.',new y.a(t,e);this.root=new c.a(this,{content:e.content},this.container),this.root.callDownwards('_$init'),'__glMaximised'===e.maximisedItemId&&this.root.getItemsById(e.maximisedItemId)[0].toggleMaximise()}_onUnload(){if(!0===this.config.settings.closePopoutsOnUnload)for(var e=0;e<this.openPopouts.length;e++)this.openPopouts[e].close()}_adjustColumnsResponsive(){if(!this._useResponsiveLayout()||this._updatingColumnsResponsive||!this.config.dimensions||!this.config.dimensions.minItemWidth||0===this.root.contentItems.length||!this.root.contentItems[0].isRow)return void(this._firstLoad=!1);this._firstLoad=!1;var e=this.root.contentItems[0].contentItems.length;if(!(1>=e)){var o=this.config.dimensions.minItemWidth;if(!(e*o<=this.width)){this._updatingColumnsResponsive=!0;for(var a,s=n(t(this.width/o),1),r=this.root.contentItems[0],l=this._findAllStackContainers()[0],c=0;c<e-s;c++)a=r.contentItems[r.contentItems.length-1],this._addChildContentItemsToContainer(l,a);this._updatingColumnsResponsive=!1}}}_useResponsiveLayout(){return this.config.settings&&('always'==this.config.settings.responsiveMode||'onload'==this.config.settings.responsiveMode&&this._firstLoad)}_addChildContentItemsToContainer(e,t){'stack'===t.type?t.contentItems.forEach(function(n){e.addChild(n),t.removeChild(n,!0)}):t.contentItems.forEach(Object(b.c)(function(t){this._addChildContentItemsToContainer(e,t)},this))}_findAllStackContainers(){var e=[];return this._findAllStackContainersRecursive(e,this.root),e}_findAllStackContainersRecursive(e,t){t.contentItems.forEach(Object(b.c)(function(t){'stack'==t.type?e.push(t):!t.isComponent&&this._findAllStackContainersRecursive(e,t)},this))}}o.a=k},function(e,t,n){e.exports={default:n(41),__esModule:!0}},function(e,t,n){n(42),e.exports=n(2).Object.keys},function(e,t,n){var o=n(43),i=n(15);n(53)('keys',function(){return function(e){return i(o(e))}})},function(e,t,n){var o=n(14);e.exports=function(e){return Object(o(e))}},function(e,t,n){var o=n(16),a=n(17),s=n(47)(!1),i=n(19)('IE_PROTO');e.exports=function(e,t){var n,r=a(e),l=0,c=[];for(n in r)n!=i&&o(r,n)&&c.push(n);for(;t.length>l;)o(r,n=t[l++])&&(~s(c,n)||c.push(n));return c}},function(e,t,n){var o=n(46);e.exports=Object('z').propertyIsEnumerable(0)?Object:function(e){return'String'==o(e)?e.split(''):Object(e)}},function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,t,n){var o=n(17),i=n(48),a=n(49);e.exports=function(e){return function(t,n,s){var r,l=o(t),c=i(l.length),p=a(s,c);if(e&&n!=n){for(;c>p;)if(r=l[p++],r!=r)return!0;}else for(;c>p;p++)if((e||p in l)&&l[p]===n)return e||p||0;return!e&&-1}}},function(t,n,o){var i=o(18);t.exports=function(t){return 0<t?e(i(t),9007199254740991):0}},function(t,o,i){var a=i(18);t.exports=function(t,o){return t=a(t),0>t?n(t+o,0):e(t,o)}},function(e,t,n){var o=n(2),i=n(4),a='__core-js_shared__',s=i[a]||(i[a]={});(e.exports=function(e,t){return s[e]||(s[e]=t===void 0?{}:t)})('versions',[]).push({version:o.version,mode:n(51)?'pure':'global',copyright:'\\xA9 2018 Denis Pushkarev (zloirock.ru)'})},function(e){e.exports=!0},function(e){var t=0,n=Math.random();e.exports=function(e){return'Symbol('.concat(e===void 0?'':e,')_',(++t+n).toString(36))}},function(e,t,n){var o=n(21),i=n(2),a=n(10);e.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],s={};s[e]=t(n),o(o.S+o.F*a(function(){n(1)}),'Object',s)}},function(e,t,n){var o=n(55);e.exports=function(e,t,n){return(o(e),void 0===t)?e:1===n?function(n){return e.call(t,n)}:2===n?function(n,o){return e.call(t,n,o)}:3===n?function(n,o,i){return e.call(t,n,o,i)}:function(){return e.apply(t,arguments)}}},function(e){e.exports=function(e){if('function'!=typeof e)throw TypeError(e+' is not a function!');return e}},function(e,t,n){var o=n(22),i=n(59);e.exports=n(5)?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){e.exports=!n(5)&&!n(10)(function(){return 7!=Object.defineProperty(n(23)('div'),'a',{get:function(){return 7}}).a})},function(e,t,n){var o=n(9);e.exports=function(e,t){if(!o(e))return e;var n,i;if(t&&'function'==typeof(n=e.toString)&&!o(i=n.call(e)))return i;if('function'==typeof(n=e.valueOf)&&!o(i=n.call(e)))return i;if(!t&&'function'==typeof(n=e.toString)&&!o(i=n.call(e)))return i;throw TypeError('Can\\'t convert object to primitive value')}},function(e){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports={default:n(61),__esModule:!0}},function(e,t,n){n(62);var o=n(2).Object;e.exports=function(e,t){return o.create(e,t)}},function(e,t,n){var o=n(21);o(o.S,'Object',{create:n(63)})},function(e,t,n){var o=n(8),i=n(64),a=n(20),s=n(19)('IE_PROTO'),r=function(){},l='prototype',c=function(){var e,t=n(23)('iframe'),o=a.length,i='<',s='>';for(t.style.display='none',n(65).appendChild(t),t.src='javascript:',e=t.contentWindow.document,e.open(),e.write(i+'script'+s+'document.F=Object'+i+'/script'+s),e.close(),c=e.F;o--;)delete c[l][a[o]];return c()};e.exports=Object.create||function(e,t){var n;return null===e?n=c():(r[l]=o(e),n=new r,r[l]=null,n[s]=e),void 0===t?n:i(n,t)}},function(e,t,n){var o=n(22),a=n(8),s=n(15);e.exports=n(5)?Object.defineProperties:function(e,t){a(e);for(var n,r=s(t),l=r.length,c=0;l>c;)o.f(e,n=r[c++],t[n]);return e}},function(e,t,n){var o=n(4).document;e.exports=o&&o.documentElement},function(e,t){'use strict';t.a={isClosable:!0,reorderEnabled:!0,title:''}},function(e,t,n){'use strict';var o=n(7);t.a=class{constructor(e,t,n){this._isVertical=e,this._size=t,this._grabSize=n<t?t:n,this.element=this._createElement(),this._dragListener=new o.a(this.element)}on(e,t,n){this._dragListener.on(e,t,n)}_$destroy(){this.element.remove()}_createElement(){var e=$('<div class=\"lm_drag_handle\"></div>'),t=$('<div class=\"lm_splitter\"></div>');t.append(e);var n=this._grabSize-this._size,o=n/2;return this._isVertical?(e.css('top',-o),e.css('height',this._size+n),t.addClass('lm_vertical'),t.height(this._size)):(e.css('left',-o),e.css('width',this._size+n),t.addClass('lm_horizontal'),t.width(this._size)),t}}},function(e,t,n){e.exports={default:n(69),__esModule:!0}},function(e,t,n){var o=n(2),i=o.JSON||(o.JSON={stringify:JSON.stringify});e.exports=function(){return i.stringify.apply(i,arguments)}},function(e,t,n){'use strict';var o=n(7),i=n(30),a=n(0);t.a=class{constructor(e,t,n){this._element=e,this._itemConfig=t,this._layoutManager=n,this._dragListener=null,this._createDragListener()}_createDragListener(){null!==this._dragListener&&this._dragListener.destroy(),this._dragListener=new o.a(this._element),this._dragListener.on('dragStart',this._onDragStart,this),this._dragListener.on('dragStop',this._createDragListener,this)}_onDragStart(e,t){var n=this._itemConfig;Object(a.h)(n)&&(n=n());var o=this._layoutManager._$normalizeContentItem($.extend(!0,{},n)),s=new i.a(e,t,this._dragListener,this._layoutManager,o,null);this._layoutManager.transitionIndicator.transitionElements(this._element,s.element)}}},function(e,t){'use strict';t.a=class{constructor(){this.element=$('<div class=\"lm_dropTargetIndicator\"><div class=\"lm_inner\"></div></div>'),$(document.body).append(this.element)}destroy(){this.element.remove()}highlight(e,t,n,o){this.highlightArea({x1:e,y1:t,x2:n,y2:o})}highlightArea(e){this.element.css({left:e.x1,top:e.y1,width:e.x2-e.x1,height:e.y2-e.y1}).show()}hide(){this.element.hide()}}},function(e,t,n){'use strict';var o=n(0);t.a=class{constructor(){this._element=$('<div class=\"lm_transition_indicator\"></div>'),$(document.body).append(this._element),this._toElement=null,this._fromDimensions=null,this._totalAnimationDuration=200,this._animationStartTime=null}destroy(){this._element.remove()}transitionElements(){}_nextAnimationFrame(){var e,t=this._measure(this._toElement),n=(Object(o.i)()-this._animationStartTime)/this._totalAnimationDuration,i={};if(1<=n)return void this._element.hide();for(e in t.opacity=0,this._fromDimensions)i[e]=this._fromDimensions[e]+(t[e]-this._fromDimensions[e])*n;this._element.css(i),Object(o.a)(Object(o.c)(this._nextAnimationFrame,this))}_measure(e){var t=e.offset();return{left:t.left,top:t.top,width:e.outerWidth(),height:e.outerHeight()}}}},function(e,t){'use strict';t.a={openPopouts:[],settings:{hasHeaders:!0,constrainDragToContainer:!0,reorderEnabled:!0,selectionEnabled:!1,popoutWholeStack:!1,blockedPopoutsThrowError:!0,closePopoutsOnUnload:!0,showPopoutIcon:!0,showMaximiseIcon:!0,showCloseIcon:!0,responsiveMode:'onload',tabOverlapAllowance:0,reorderOnTabMenuClick:!0,tabControlOffset:10},dimensions:{borderWidth:5,borderGrabWidth:15,minItemHeight:10,minItemWidth:10,headerHeight:20,dragProxyWidth:300,dragProxyHeight:200},labels:{close:'close',maximise:'maximise',minimise:'minimise',popout:'open in new window',popin:'pop in',tabDropdown:'additional tabs'}}},function(e,t,n){n(75)(n(76))},function(e){e.exports=function(e){function t(e){'undefined'!=typeof console&&(console.error||console.log)('[Script Loader]',e)}function n(){return'undefined'!=typeof attachEvent&&'undefined'==typeof addEventListener}try{'undefined'!=typeof execScript&&n()?execScript(e):'undefined'==typeof eval?t('EvalError: No eval function available'):eval.call(null,e)}catch(e){t(e)}}},function(e){e.exports='/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\\n(function(global, factory) {\\n if (typeof define === \\'function\\' && define.amd)\\n define(function() { return factory(global) })\\n else\\n factory(global)\\n}(this, function(window) {\\n var Zepto = (function() {\\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\\n document = window.document,\\n elementDisplay = {}, classCache = {},\\n cssNumber = { \\'column-count\\': 1, \\'columns\\': 1, \\'font-weight\\': 1, \\'line-height\\': 1,\\'opacity\\': 1, \\'z-index\\': 1, \\'zoom\\': 1 },\\n fragmentRE = /^\\\\s*<(\\\\w+|!)[^>]*>/,\\n singleTagRE = /^<(\\\\w+)\\\\s*\\\\/?>(?:<\\\\/\\\\1>|)$/,\\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\\\w:]+)[^>]*)\\\\/>/ig,\\n rootNodeRE = /^(?:body|html)$/i,\\n capitalRE = /([A-Z])/g,\\n\\n // special attributes that should be get/set via method calls\\n methodAttributes = [\\'val\\', \\'css\\', \\'html\\', \\'text\\', \\'data\\', \\'width\\', \\'height\\', \\'offset\\'],\\n\\n adjacencyOperators = [ \\'after\\', \\'prepend\\', \\'before\\', \\'append\\' ],\\n table = document.createElement(\\'table\\'),\\n tableRow = document.createElement(\\'tr\\'),\\n containers = {\\n \\'tr\\': document.createElement(\\'tbody\\'),\\n \\'tbody\\': table, \\'thead\\': table, \\'tfoot\\': table,\\n \\'td\\': tableRow, \\'th\\': tableRow,\\n \\'*\\': document.createElement(\\'div\\')\\n },\\n readyRE = /complete|loaded|interactive/,\\n simpleSelectorRE = /^[\\\\w-]*$/,\\n class2type = {},\\n toString = class2type.toString,\\n zepto = {},\\n camelize, uniq,\\n tempParent = document.createElement(\\'div\\'),\\n propMap = {\\n \\'tabindex\\': \\'tabIndex\\',\\n \\'readonly\\': \\'readOnly\\',\\n \\'for\\': \\'htmlFor\\',\\n \\'class\\': \\'className\\',\\n \\'maxlength\\': \\'maxLength\\',\\n \\'cellspacing\\': \\'cellSpacing\\',\\n \\'cellpadding\\': \\'cellPadding\\',\\n \\'rowspan\\': \\'rowSpan\\',\\n \\'colspan\\': \\'colSpan\\',\\n \\'usemap\\': \\'useMap\\',\\n \\'frameborder\\': \\'frameBorder\\',\\n \\'contenteditable\\': \\'contentEditable\\'\\n },\\n isArray = Array.isArray ||\\n function(object){ return object instanceof Array }\\n\\n zepto.matches = function(element, selector) {\\n if (!selector || !element || element.nodeType !== 1) return false\\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\\n element.mozMatchesSelector || element.oMatchesSelector ||\\n element.matchesSelector\\n if (matchesSelector) return matchesSelector.call(element, selector)\\n // fall back to performing a selector:\\n var match, parent = element.parentNode, temp = !parent\\n if (temp) (parent = tempParent).appendChild(element)\\n match = ~zepto.qsa(parent, selector).indexOf(element)\\n temp && tempParent.removeChild(element)\\n return match\\n }\\n\\n function type(obj) {\\n return obj == null ? String(obj) :\\n class2type[toString.call(obj)] || \"object\"\\n }\\n\\n function isFunction(value) { return type(value) == \"function\" }\\n function isWindow(obj) { return obj != null && obj == obj.window }\\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\\n function isObject(obj) { return type(obj) == \"object\" }\\n function isPlainObject(obj) {\\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\\n }\\n\\n function likeArray(obj) {\\n var length = !!obj && \\'length\\' in obj && obj.length,\\n type = $.type(obj)\\n\\n return \\'function\\' != type && !isWindow(obj) && (\\n \\'array\\' == type || length === 0 ||\\n (typeof length == \\'number\\' && length > 0 && (length - 1) in obj)\\n )\\n }\\n\\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : \\'\\' }) }\\n function dasherize(str) {\\n return str.replace(/::/g, \\'/\\')\\n .replace(/([A-Z]+)([A-Z][a-z])/g, \\'$1_$2\\')\\n .replace(/([a-z\\\\d])([A-Z])/g, \\'$1_$2\\')\\n .replace(/_/g, \\'-\\')\\n .toLowerCase()\\n }\\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\\n\\n function classRE(name) {\\n return name in classCache ?\\n classCache[name] : (classCache[name] = new RegExp(\\'(^|\\\\\\\\s)\\' + name + \\'(\\\\\\\\s|$)\\'))\\n }\\n\\n function maybeAddPx(name, value) {\\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\\n }\\n\\n function defaultDisplay(nodeName) {\\n var element, display\\n if (!elementDisplay[nodeName]) {\\n element = document.createElement(nodeName)\\n document.body.appendChild(element)\\n display = getComputedStyle(element, \\'\\').getPropertyValue(\"display\")\\n element.parentNode.removeChild(element)\\n display == \"none\" && (display = \"block\")\\n elementDisplay[nodeName] = display\\n }\\n return elementDisplay[nodeName]\\n }\\n\\n function children(element) {\\n return \\'children\\' in element ?\\n slice.call(element.children) :\\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\\n }\\n\\n function Z(dom, selector) {\\n var i, len = dom ? dom.length : 0\\n for (i = 0; i < len; i++) this[i] = dom[i]\\n this.length = len\\n this.selector = selector || \\'\\'\\n }\\n\\n // `$.zepto.fragment` takes a html string and an optional tag name\\n // to generate DOM nodes from the given html string.\\n // The generated DOM nodes are returned as an array.\\n // This function can be overridden in plugins for example to make\\n // it compatible with browsers that don\\'t support the DOM fully.\\n zepto.fragment = function(html, name, properties) {\\n var dom, nodes, container\\n\\n // A special case optimization for a single tag\\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\\n\\n if (!dom) {\\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\\n if (!(name in containers)) name = \\'*\\'\\n\\n container = containers[name]\\n container.innerHTML = \\'\\' + html\\n dom = $.each(slice.call(container.childNodes), function(){\\n container.removeChild(this)\\n })\\n }\\n\\n if (isPlainObject(properties)) {\\n nodes = $(dom)\\n $.each(properties, function(key, value) {\\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\\n else nodes.attr(key, value)\\n })\\n }\\n\\n return dom\\n }\\n\\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\\n // of nodes with `$.fn` and thus supplying all the Zepto functions\\n // to the array. This method can be overridden in plugins.\\n zepto.Z = function(dom, selector) {\\n return new Z(dom, selector)\\n }\\n\\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\\n // collection. This method can be overridden in plugins.\\n zepto.isZ = function(object) {\\n return object instanceof zepto.Z\\n }\\n\\n // `$.zepto.init` is Zepto\\'s counterpart to jQuery\\'s `$.fn.init` and\\n // takes a CSS selector and an optional context (and handles various\\n // special cases).\\n // This method can be overridden in plugins.\\n zepto.init = function(selector, context) {\\n var dom\\n // If nothing given, return an empty Zepto collection\\n if (!selector) return zepto.Z()\\n // Optimize for string selectors\\n else if (typeof selector == \\'string\\') {\\n selector = selector.trim()\\n // If it\\'s a html fragment, create nodes from it\\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\\n // is thrown if the fragment doesn\\'t begin with <\\n if (selector[0] == \\'<\\' && fragmentRE.test(selector))\\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\\n // If there\\'s a context, create a collection on that context first, and select\\n // nodes from there\\n else if (context !== undefined) return $(context).find(selector)\\n // If it\\'s a CSS selector, use it to select nodes.\\n else dom = zepto.qsa(document, selector)\\n }\\n // If a function is given, call it when the DOM is ready\\n else if (isFunction(selector)) return $(document).ready(selector)\\n // If a Zepto collection is given, just return it\\n else if (zepto.isZ(selector)) return selector\\n else {\\n // normalize array if an array of nodes is given\\n if (isArray(selector)) dom = compact(selector)\\n // Wrap DOM nodes.\\n else if (isObject(selector))\\n dom = [selector], selector = null\\n // If it\\'s a html fragment, create nodes from it\\n else if (fragmentRE.test(selector))\\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\\n // If there\\'s a context, create a collection on that context first, and select\\n // nodes from there\\n else if (context !== undefined) return $(context).find(selector)\\n // And last but no least, if it\\'s a CSS selector, use it to select nodes.\\n else dom = zepto.qsa(document, selector)\\n }\\n // create a new Zepto collection from the nodes found\\n return zepto.Z(dom, selector)\\n }\\n\\n // `$` will be the base `Zepto` object. When calling this\\n // function just call `$.zepto.init, which makes the implementation\\n // details of selecting nodes and creating Zepto collections\\n // patchable in plugins.\\n $ = function(selector, context){\\n return zepto.init(selector, context)\\n }\\n\\n function extend(target, source, deep) {\\n for (key in source)\\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\\n target[key] = {}\\n if (isArray(source[key]) && !isArray(target[key]))\\n target[key] = []\\n extend(target[key], source[key], deep)\\n }\\n else if (source[key] !== undefined) target[key] = source[key]\\n }\\n\\n // Copy all but undefined properties from one or more\\n // objects to the `target` object.\\n $.extend = function(target){\\n var deep, args = slice.call(arguments, 1)\\n if (typeof target == \\'boolean\\') {\\n deep = target\\n target = args.shift()\\n }\\n args.forEach(function(arg){ extend(target, arg, deep) })\\n return target\\n }\\n\\n // `$.zepto.qsa` is Zepto\\'s CSS selector implementation which\\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\\n // This method can be overridden in plugins.\\n zepto.qsa = function(element, selector){\\n var found,\\n maybeID = selector[0] == \\'#\\',\\n maybeClass = !maybeID && selector[0] == \\'.\\',\\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\\n isSimple = simpleSelectorRE.test(nameOnly)\\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn\\'t have getElementById\\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\\n slice.call(\\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn\\'t have getElementsByClassName/TagName\\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it\\'s simple, it could be a class\\n element.getElementsByTagName(selector) : // Or a tag\\n element.querySelectorAll(selector) // Or it\\'s not simple, and we need to query all\\n )\\n }\\n\\n function filtered(nodes, selector) {\\n return selector == null ? $(nodes) : $(nodes).filter(selector)\\n }\\n\\n $.contains = document.documentElement.contains ?\\n function(parent, node) {\\n return parent !== node && parent.contains(node)\\n } :\\n function(parent, node) {\\n while (node && (node = node.parentNode))\\n if (node === parent) return true\\n return false\\n }\\n\\n function funcArg(context, arg, idx, payload) {\\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\\n }\\n\\n function setAttribute(node, name, value) {\\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\\n }\\n\\n // access className property while respecting SVGAnimatedString\\n function className(node, value){\\n var klass = node.className || \\'\\',\\n svg = klass && klass.baseVal !== undefined\\n\\n if (value === undefined) return svg ? klass.baseVal : klass\\n svg ? (klass.baseVal = value) : (node.className = value)\\n }\\n\\n // \"true\" => true\\n // \"false\" => false\\n // \"null\" => null\\n // \"42\" => 42\\n // \"42.5\" => 42.5\\n // \"08\" => \"08\"\\n // JSON => parse if valid\\n // String => self\\n function deserializeValue(value) {\\n try {\\n return value ?\\n value == \"true\" ||\\n ( value == \"false\" ? false :\\n value == \"null\" ? null :\\n +value + \"\" == value ? +value :\\n /^[\\\\[\\\\{]/.test(value) ? $.parseJSON(value) :\\n value )\\n : value\\n } catch(e) {\\n return value\\n }\\n }\\n\\n $.type = type\\n $.isFunction = isFunction\\n $.isWindow = isWindow\\n $.isArray = isArray\\n $.isPlainObject = isPlainObject\\n\\n $.isEmptyObject = function(obj) {\\n var name\\n for (name in obj) return false\\n return true\\n }\\n\\n $.isNumeric = function(val) {\\n var num = Number(val), type = typeof val\\n return val != null && type != \\'boolean\\' &&\\n (type != \\'string\\' || val.length) &&\\n !isNaN(num) && isFinite(num) || false\\n }\\n\\n $.inArray = function(elem, array, i){\\n return emptyArray.indexOf.call(array, elem, i)\\n }\\n\\n $.camelCase = camelize\\n $.trim = function(str) {\\n return str == null ? \"\" : String.prototype.trim.call(str)\\n }\\n\\n // plugin compatibility\\n $.uuid = 0\\n $.support = { }\\n $.expr = { }\\n $.noop = function() {}\\n\\n $.map = function(elements, callback){\\n var value, values = [], i, key\\n if (likeArray(elements))\\n for (i = 0; i < elements.length; i++) {\\n value = callback(elements[i], i)\\n if (value != null) values.push(value)\\n }\\n else\\n for (key in elements) {\\n value = callback(elements[key], key)\\n if (value != null) values.push(value)\\n }\\n return flatten(values)\\n }\\n\\n $.each = function(elements, callback){\\n var i, key\\n if (likeArray(elements)) {\\n for (i = 0; i < elements.length; i++)\\n if (callback.call(elements[i], i, elements[i]) === false) return elements\\n } else {\\n for (key in elements)\\n if (callback.call(elements[key], key, elements[key]) === false) return elements\\n }\\n\\n return elements\\n }\\n\\n $.grep = function(elements, callback){\\n return filter.call(elements, callback)\\n }\\n\\n if (window.JSON) $.parseJSON = JSON.parse\\n\\n // Populate the class2type map\\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\\n })\\n\\n // Define methods that will be available on all\\n // Zepto collections\\n $.fn = {\\n constructor: zepto.Z,\\n length: 0,\\n\\n // Because a collection acts like an array\\n // copy over these useful array functions.\\n forEach: emptyArray.forEach,\\n reduce: emptyArray.reduce,\\n push: emptyArray.push,\\n sort: emptyArray.sort,\\n splice: emptyArray.splice,\\n indexOf: emptyArray.indexOf,\\n concat: function(){\\n var i, value, args = []\\n for (i = 0; i < arguments.length; i++) {\\n value = arguments[i]\\n args[i] = zepto.isZ(value) ? value.toArray() : value\\n }\\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\\n },\\n\\n // `map` and `slice` in the jQuery API work differently\\n // from their array counterparts\\n map: function(fn){\\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\\n },\\n slice: function(){\\n return $(slice.apply(this, arguments))\\n },\\n\\n ready: function(callback){\\n // need to check if document.body exists for IE as that browser reports\\n // document ready when it hasn\\'t yet created the body element\\n if (readyRE.test(document.readyState) && document.body) callback($)\\n else document.addEventListener(\\'DOMContentLoaded\\', function(){ callback($) }, false)\\n return this\\n },\\n get: function(idx){\\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\\n },\\n toArray: function(){ return this.get() },\\n size: function(){\\n return this.length\\n },\\n remove: function(){\\n return this.each(function(){\\n if (this.parentNode != null)\\n this.parentNode.removeChild(this)\\n })\\n },\\n each: function(callback){\\n emptyArray.every.call(this, function(el, idx){\\n return callback.call(el, idx, el) !== false\\n })\\n return this\\n },\\n filter: function(selector){\\n if (isFunction(selector)) return this.not(this.not(selector))\\n return $(filter.call(this, function(element){\\n return zepto.matches(element, selector)\\n }))\\n },\\n add: function(selector,context){\\n return $(uniq(this.concat($(selector,context))))\\n },\\n is: function(selector){\\n return this.length > 0 && zepto.matches(this[0], selector)\\n },\\n not: function(selector){\\n var nodes=[]\\n if (isFunction(selector) && selector.call !== undefined)\\n this.each(function(idx){\\n if (!selector.call(this,idx)) nodes.push(this)\\n })\\n else {\\n var excludes = typeof selector == \\'string\\' ? this.filter(selector) :\\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\\n this.forEach(function(el){\\n if (excludes.indexOf(el) < 0) nodes.push(el)\\n })\\n }\\n return $(nodes)\\n },\\n has: function(selector){\\n return this.filter(function(){\\n return isObject(selector) ?\\n $.contains(this, selector) :\\n $(this).find(selector).size()\\n })\\n },\\n eq: function(idx){\\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\\n },\\n first: function(){\\n var el = this[0]\\n return el && !isObject(el) ? el : $(el)\\n },\\n last: function(){\\n var el = this[this.length - 1]\\n return el && !isObject(el) ? el : $(el)\\n },\\n find: function(selector){\\n var result, $this = this\\n if (!selector) result = $()\\n else if (typeof selector == \\'object\\')\\n result = $(selector).filter(function(){\\n var node = this\\n return emptyArray.some.call($this, function(parent){\\n return $.contains(parent, node)\\n })\\n })\\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\\n else result = this.map(function(){ return zepto.qsa(this, selector) })\\n return result\\n },\\n closest: function(selector, context){\\n var nodes = [], collection = typeof selector == \\'object\\' && $(selector)\\n this.each(function(_, node){\\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\\n node = node !== context && !isDocument(node) && node.parentNode\\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\\n })\\n return $(nodes)\\n },\\n parents: function(selector){\\n var ancestors = [], nodes = this\\n while (nodes.length > 0)\\n nodes = $.map(nodes, function(node){\\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\\n ancestors.push(node)\\n return node\\n }\\n })\\n return filtered(ancestors, selector)\\n },\\n parent: function(selector){\\n return filtered(uniq(this.pluck(\\'parentNode\\')), selector)\\n },\\n children: function(selector){\\n return filtered(this.map(function(){ return children(this) }), selector)\\n },\\n contents: function() {\\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\\n },\\n siblings: function(selector){\\n return filtered(this.map(function(i, el){\\n return filter.call(children(el.parentNode), function(child){ return child!==el })\\n }), selector)\\n },\\n empty: function(){\\n return this.each(function(){ this.innerHTML = \\'\\' })\\n },\\n // `pluck` is borrowed from Prototype.js\\n pluck: function(property){\\n return $.map(this, function(el){ return el[property] })\\n },\\n show: function(){\\n return this.each(function(){\\n this.style.display == \"none\" && (this.style.display = \\'\\')\\n if (getComputedStyle(this, \\'\\').getPropertyValue(\"display\") == \"none\")\\n this.style.display = defaultDisplay(this.nodeName)\\n })\\n },\\n replaceWith: function(newContent){\\n return this.before(newContent).remove()\\n },\\n wrap: function(structure){\\n var func = isFunction(structure)\\n if (this[0] && !func)\\n var dom = $(structure).get(0),\\n clone = dom.parentNode || this.length > 1\\n\\n return this.each(function(index){\\n $(this).wrapAll(\\n func ? structure.call(this, index) :\\n clone ? dom.cloneNode(true) : dom\\n )\\n })\\n },\\n wrapAll: function(structure){\\n if (this[0]) {\\n $(this[0]).before(structure = $(structure))\\n var children\\n // drill down to the inmost element\\n while ((children = structure.children()).length) structure = children.first()\\n $(structure).append(this)\\n }\\n return this\\n },\\n wrapInner: function(structure){\\n var func = isFunction(structure)\\n return this.each(function(index){\\n var self = $(this), contents = self.contents(),\\n dom = func ? structure.call(this, index) : structure\\n contents.length ? contents.wrapAll(dom) : self.append(dom)\\n })\\n },\\n unwrap: function(){\\n this.parent().each(function(){\\n $(this).replaceWith($(this).children())\\n })\\n return this\\n },\\n clone: function(){\\n return this.map(function(){ return this.cloneNode(true) })\\n },\\n hide: function(){\\n return this.css(\"display\", \"none\")\\n },\\n toggle: function(setting){\\n return this.each(function(){\\n var el = $(this)\\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\\n })\\n },\\n prev: function(selector){ return $(this.pluck(\\'previousElementSibling\\')).filter(selector || \\'*\\') },\\n next: function(selector){ return $(this.pluck(\\'nextElementSibling\\')).filter(selector || \\'*\\') },\\n html: function(html){\\n return 0 in arguments ?\\n this.each(function(idx){\\n var originHtml = this.innerHTML\\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\\n }) :\\n (0 in this ? this[0].innerHTML : null)\\n },\\n text: function(text){\\n return 0 in arguments ?\\n this.each(function(idx){\\n var newText = funcArg(this, text, idx, this.textContent)\\n this.textContent = newText == null ? \\'\\' : \\'\\'+newText\\n }) :\\n (0 in this ? this.pluck(\\'textContent\\').join(\"\") : null)\\n },\\n attr: function(name, value){\\n var result\\n return (typeof name == \\'string\\' && !(1 in arguments)) ?\\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\\n this.each(function(idx){\\n if (this.nodeType !== 1) return\\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\\n })\\n },\\n removeAttr: function(name){\\n return this.each(function(){ this.nodeType === 1 && name.split(\\' \\').forEach(function(attribute){\\n setAttribute(this, attribute)\\n }, this)})\\n },\\n prop: function(name, value){\\n name = propMap[name] || name\\n return (1 in arguments) ?\\n this.each(function(idx){\\n this[name] = funcArg(this, value, idx, this[name])\\n }) :\\n (this[0] && this[0][name])\\n },\\n removeProp: function(name){\\n name = propMap[name] || name\\n return this.each(function(){ delete this[name] })\\n },\\n data: function(name, value){\\n var attrName = \\'data-\\' + name.replace(capitalRE, \\'-$1\\').toLowerCase()\\n\\n var data = (1 in arguments) ?\\n this.attr(attrName, value) :\\n this.attr(attrName)\\n\\n return data !== null ? deserializeValue(data) : undefined\\n },\\n val: function(value){\\n if (0 in arguments) {\\n if (value == null) value = \"\"\\n return this.each(function(idx){\\n this.value = funcArg(this, value, idx, this.value)\\n })\\n } else {\\n return this[0] && (this[0].multiple ?\\n $(this[0]).find(\\'option\\').filter(function(){ return this.selected }).pluck(\\'value\\') :\\n this[0].value)\\n }\\n },\\n offset: function(coordinates){\\n if (coordinates) return this.each(function(index){\\n var $this = $(this),\\n coords = funcArg(this, coordinates, index, $this.offset()),\\n parentOffset = $this.offsetParent().offset(),\\n props = {\\n top: coords.top - parentOffset.top,\\n left: coords.left - parentOffset.left\\n }\\n\\n if ($this.css(\\'position\\') == \\'static\\') props[\\'position\\'] = \\'relative\\'\\n $this.css(props)\\n })\\n if (!this.length) return null\\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\\n return {top: 0, left: 0}\\n var obj = this[0].getBoundingClientRect()\\n return {\\n left: obj.left + window.pageXOffset,\\n top: obj.top + window.pageYOffset,\\n width: Math.round(obj.width),\\n height: Math.round(obj.height)\\n }\\n },\\n css: function(property, value){\\n if (arguments.length < 2) {\\n var element = this[0]\\n if (typeof property == \\'string\\') {\\n if (!element) return\\n return element.style[camelize(property)] || getComputedStyle(element, \\'\\').getPropertyValue(property)\\n } else if (isArray(property)) {\\n if (!element) return\\n var props = {}\\n var computedStyle = getComputedStyle(element, \\'\\')\\n $.each(property, function(_, prop){\\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\\n })\\n return props\\n }\\n }\\n\\n var css = \\'\\'\\n if (type(property) == \\'string\\') {\\n if (!value && value !== 0)\\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\\n else\\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\\n } else {\\n for (key in property)\\n if (!property[key] && property[key] !== 0)\\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\\n else\\n css += dasherize(key) + \\':\\' + maybeAddPx(key, property[key]) + \\';\\'\\n }\\n\\n return this.each(function(){ this.style.cssText += \\';\\' + css })\\n },\\n index: function(element){\\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\\n },\\n hasClass: function(name){\\n if (!name) return false\\n return emptyArray.some.call(this, function(el){\\n return this.test(className(el))\\n }, classRE(name))\\n },\\n addClass: function(name){\\n if (!name) return this\\n return this.each(function(idx){\\n if (!(\\'className\\' in this)) return\\n classList = []\\n var cls = className(this), newName = funcArg(this, name, idx, cls)\\n newName.split(/\\\\s+/g).forEach(function(klass){\\n if (!$(this).hasClass(klass)) classList.push(klass)\\n }, this)\\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\\n })\\n },\\n removeClass: function(name){\\n return this.each(function(idx){\\n if (!(\\'className\\' in this)) return\\n if (name === undefined) return className(this, \\'\\')\\n classList = className(this)\\n funcArg(this, name, idx, classList).split(/\\\\s+/g).forEach(function(klass){\\n classList = classList.replace(classRE(klass), \" \")\\n })\\n className(this, classList.trim())\\n })\\n },\\n toggleClass: function(name, when){\\n if (!name) return this\\n return this.each(function(idx){\\n var $this = $(this), names = funcArg(this, name, idx, className(this))\\n names.split(/\\\\s+/g).forEach(function(klass){\\n (when === undefined ? !$this.hasClass(klass) : when) ?\\n $this.addClass(klass) : $this.removeClass(klass)\\n })\\n })\\n },\\n scrollTop: function(value){\\n if (!this.length) return\\n var hasScrollTop = \\'scrollTop\\' in this[0]\\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\\n return this.each(hasScrollTop ?\\n function(){ this.scrollTop = value } :\\n function(){ this.scrollTo(this.scrollX, value) })\\n },\\n scrollLeft: function(value){\\n if (!this.length) return\\n var hasScrollLeft = \\'scrollLeft\\' in this[0]\\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\\n return this.each(hasScrollLeft ?\\n function(){ this.scrollLeft = value } :\\n function(){ this.scrollTo(value, this.scrollY) })\\n },\\n position: function() {\\n if (!this.length) return\\n\\n var elem = this[0],\\n // Get *real* offsetParent\\n offsetParent = this.offsetParent(),\\n // Get correct offsets\\n offset = this.offset(),\\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\\n\\n // Subtract element margins\\n // note: when an element has margin: auto the offsetLeft and marginLeft\\n // are the same in Safari causing offset.left to incorrectly be 0\\n offset.top -= parseFloat( $(elem).css(\\'margin-top\\') ) || 0\\n offset.left -= parseFloat( $(elem).css(\\'margin-left\\') ) || 0\\n\\n // Add offsetParent borders\\n parentOffset.top += parseFloat( $(offsetParent[0]).css(\\'border-top-width\\') ) || 0\\n parentOffset.left += parseFloat( $(offsetParent[0]).css(\\'border-left-width\\') ) || 0\\n\\n // Subtract the two offsets\\n return {\\n top: offset.top - parentOffset.top,\\n left: offset.left - parentOffset.left\\n }\\n },\\n offsetParent: function() {\\n return this.map(function(){\\n var parent = this.offsetParent || document.body\\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\\n parent = parent.offsetParent\\n return parent\\n })\\n }\\n }\\n\\n // for now\\n $.fn.detach = $.fn.remove\\n\\n // Generate the `width` and `height` functions\\n ;[\\'width\\', \\'height\\'].forEach(function(dimension){\\n var dimensionProperty =\\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\\n\\n $.fn[dimension] = function(value){\\n var offset, el = this[0]\\n if (value === undefined) return isWindow(el) ? el[\\'inner\\' + dimensionProperty] :\\n isDocument(el) ? el.documentElement[\\'scroll\\' + dimensionProperty] :\\n (offset = this.offset()) && offset[dimension]\\n else return this.each(function(idx){\\n el = $(this)\\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\\n })\\n }\\n })\\n\\n function traverseNode(node, fun) {\\n fun(node)\\n for (var i = 0, len = node.childNodes.length; i < len; i++)\\n traverseNode(node.childNodes[i], fun)\\n }\\n\\n // Generate the `after`, `prepend`, `before`, `append`,\\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\\n adjacencyOperators.forEach(function(operator, operatorIndex) {\\n var inside = operatorIndex % 2 //=> prepend, append\\n\\n $.fn[operator] = function(){\\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\\n var argType, nodes = $.map(arguments, function(arg) {\\n var arr = []\\n argType = type(arg)\\n if (argType == \"array\") {\\n arg.forEach(function(el) {\\n if (el.nodeType !== undefined) return arr.push(el)\\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\\n arr = arr.concat(zepto.fragment(el))\\n })\\n return arr\\n }\\n return argType == \"object\" || arg == null ?\\n arg : zepto.fragment(arg)\\n }),\\n parent, copyByClone = this.length > 1\\n if (nodes.length < 1) return this\\n\\n return this.each(function(_, target){\\n parent = inside ? target : target.parentNode\\n\\n // convert all methods to a \"before\" operation\\n target = operatorIndex == 0 ? target.nextSibling :\\n operatorIndex == 1 ? target.firstChild :\\n operatorIndex == 2 ? target :\\n null\\n\\n var parentInDocument = $.contains(document.documentElement, parent)\\n\\n nodes.forEach(function(node){\\n if (copyByClone) node = node.cloneNode(true)\\n else if (!parent) return $(node).remove()\\n\\n parent.insertBefore(node, target)\\n if (parentInDocument) traverseNode(node, function(el){\\n if (el.nodeName != null && el.nodeName.toUpperCase() === \\'SCRIPT\\' &&\\n (!el.type || el.type === \\'text/javascript\\') && !el.src){\\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\\n target[\\'eval\\'].call(target, el.innerHTML)\\n }\\n })\\n })\\n })\\n }\\n\\n // after => insertAfter\\n // prepend => prependTo\\n // before => insertBefore\\n // append => appendTo\\n $.fn[inside ? operator+\\'To\\' : \\'insert\\'+(operatorIndex ? \\'Before\\' : \\'After\\')] = function(html){\\n $(html)[operator](this)\\n return this\\n }\\n })\\n\\n zepto.Z.prototype = Z.prototype = $.fn\\n\\n // Export internal API functions in the `$.zepto` namespace\\n zepto.uniq = uniq\\n zepto.deserializeValue = deserializeValue\\n $.zepto = zepto\\n\\n return $\\n})()\\n\\nwindow.Zepto = Zepto\\nwindow.$ === undefined && (window.$ = Zepto)\\n\\n;(function($){\\n var _zid = 1, undefined,\\n slice = Array.prototype.slice,\\n isFunction = $.isFunction,\\n isString = function(obj){ return typeof obj == \\'string\\' },\\n handlers = {},\\n specialEvents={},\\n focusinSupported = \\'onfocusin\\' in window,\\n focus = { focus: \\'focusin\\', blur: \\'focusout\\' },\\n hover = { mouseenter: \\'mouseover\\', mouseleave: \\'mouseout\\' }\\n\\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = \\'MouseEvents\\'\\n\\n function zid(element) {\\n return element._zid || (element._zid = _zid++)\\n }\\n function findHandlers(element, event, fn, selector) {\\n event = parse(event)\\n if (event.ns) var matcher = matcherFor(event.ns)\\n return (handlers[zid(element)] || []).filter(function(handler) {\\n return handler\\n && (!event.e || handler.e == event.e)\\n && (!event.ns || matcher.test(handler.ns))\\n && (!fn || zid(handler.fn) === zid(fn))\\n && (!selector || handler.sel == selector)\\n })\\n }\\n function parse(event) {\\n var parts = (\\'\\' + event).split(\\'.\\')\\n return {e: parts[0], ns: parts.slice(1).sort().join(\\' \\')}\\n }\\n function matcherFor(ns) {\\n return new RegExp(\\'(?:^| )\\' + ns.replace(\\' \\', \\' .* ?\\') + \\'(?: |$)\\')\\n }\\n\\n function eventCapture(handler, captureSetting) {\\n return handler.del &&\\n (!focusinSupported && (handler.e in focus)) ||\\n !!captureSetting\\n }\\n\\n function realEvent(type) {\\n return hover[type] || (focusinSupported && focus[type]) || type\\n }\\n\\n function add(element, events, fn, data, selector, delegator, capture){\\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\\n events.split(/\\\\s/).forEach(function(event){\\n if (event == \\'ready\\') return $(document).ready(fn)\\n var handler = parse(event)\\n handler.fn = fn\\n handler.sel = selector\\n // emulate mouseenter, mouseleave\\n if (handler.e in hover) fn = function(e){\\n var related = e.relatedTarget\\n if (!related || (related !== this && !$.contains(this, related)))\\n return handler.fn.apply(this, arguments)\\n }\\n handler.del = delegator\\n var callback = delegator || fn\\n handler.proxy = function(e){\\n e = compatible(e)\\n if (e.isImmediatePropagationStopped()) return\\n e.data = data\\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\\n if (result === false) e.preventDefault(), e.stopPropagation()\\n return result\\n }\\n handler.i = set.length\\n set.push(handler)\\n if (\\'addEventListener\\' in element)\\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\\n })\\n }\\n function remove(element, events, fn, selector, capture){\\n var id = zid(element)\\n ;(events || \\'\\').split(/\\\\s/).forEach(function(event){\\n findHandlers(element, event, fn, selector).forEach(function(handler){\\n delete handlers[id][handler.i]\\n if (\\'removeEventListener\\' in element)\\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\\n })\\n })\\n }\\n\\n $.event = { add: add, remove: remove }\\n\\n $.proxy = function(fn, context) {\\n var args = (2 in arguments) && slice.call(arguments, 2)\\n if (isFunction(fn)) {\\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\\n proxyFn._zid = zid(fn)\\n return proxyFn\\n } else if (isString(context)) {\\n if (args) {\\n args.unshift(fn[context], fn)\\n return $.proxy.apply(null, args)\\n } else {\\n return $.proxy(fn[context], fn)\\n }\\n } else {\\n throw new TypeError(\"expected function\")\\n }\\n }\\n\\n $.fn.bind = function(event, data, callback){\\n return this.on(event, data, callback)\\n }\\n $.fn.unbind = function(event, callback){\\n return this.off(event, callback)\\n }\\n $.fn.one = function(event, selector, data, callback){\\n return this.on(event, selector, data, callback, 1)\\n }\\n\\n var returnTrue = function(){return true},\\n returnFalse = function(){return false},\\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\\n eventMethods = {\\n preventDefault: \\'isDefaultPrevented\\',\\n stopImmediatePropagation: \\'isImmediatePropagationStopped\\',\\n stopPropagation: \\'isPropagationStopped\\'\\n }\\n\\n function compatible(event, source) {\\n if (source || !event.isDefaultPrevented) {\\n source || (source = event)\\n\\n $.each(eventMethods, function(name, predicate) {\\n var sourceMethod = source[name]\\n event[name] = function(){\\n this[predicate] = returnTrue\\n return sourceMethod && sourceMethod.apply(source, arguments)\\n }\\n event[predicate] = returnFalse\\n })\\n\\n event.timeStamp || (event.timeStamp = Date.now())\\n\\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\\n \\'returnValue\\' in source ? source.returnValue === false :\\n source.getPreventDefault && source.getPreventDefault())\\n event.isDefaultPrevented = returnTrue\\n }\\n return event\\n }\\n\\n function createProxy(event) {\\n var key, proxy = { originalEvent: event }\\n for (key in event)\\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\\n\\n return compatible(proxy, event)\\n }\\n\\n $.fn.delegate = function(selector, event, callback){\\n return this.on(event, selector, callback)\\n }\\n $.fn.undelegate = function(selector, event, callback){\\n return this.off(event, selector, callback)\\n }\\n\\n $.fn.live = function(event, callback){\\n $(document.body).delegate(this.selector, event, callback)\\n return this\\n }\\n $.fn.die = function(event, callback){\\n $(document.body).undelegate(this.selector, event, callback)\\n return this\\n }\\n\\n $.fn.on = function(event, selector, data, callback, one){\\n var autoRemove, delegator, $this = this\\n if (event && !isString(event)) {\\n $.each(event, function(type, fn){\\n $this.on(type, selector, data, fn, one)\\n })\\n return $this\\n }\\n\\n if (!isString(selector) && !isFunction(callback) && callback !== false)\\n callback = data, data = selector, selector = undefined\\n if (callback === undefined || data === false)\\n callback = data, data = undefined\\n\\n if (callback === false) callback = returnFalse\\n\\n return $this.each(function(_, element){\\n if (one) autoRemove = function(e){\\n remove(element, e.type, callback)\\n return callback.apply(this, arguments)\\n }\\n\\n if (selector) delegator = function(e){\\n var evt, match = $(e.target).closest(selector, element).get(0)\\n if (match && match !== element) {\\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\\n }\\n }\\n\\n add(element, event, callback, data, selector, delegator || autoRemove)\\n })\\n }\\n $.fn.off = function(event, selector, callback){\\n var $this = this\\n if (event && !isString(event)) {\\n $.each(event, function(type, fn){\\n $this.off(type, selector, fn)\\n })\\n return $this\\n }\\n\\n if (!isString(selector) && !isFunction(callback) && callback !== false)\\n callback = selector, selector = undefined\\n\\n if (callback === false) callback = returnFalse\\n\\n return $this.each(function(){\\n remove(this, event, callback, selector)\\n })\\n }\\n\\n $.fn.trigger = function(event, args){\\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\\n event._args = args\\n return this.each(function(){\\n // handle focus(), blur() by calling them directly\\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\\n // items in the collection might not be DOM elements\\n else if (\\'dispatchEvent\\' in this) this.dispatchEvent(event)\\n else $(this).triggerHandler(event, args)\\n })\\n }\\n\\n // triggers event handlers on current element just as if an event occurred,\\n // doesn\\'t trigger an actual event, doesn\\'t bubble\\n $.fn.triggerHandler = function(event, args){\\n var e, result\\n this.each(function(i, element){\\n e = createProxy(isString(event) ? $.Event(event) : event)\\n e._args = args\\n e.target = element\\n $.each(findHandlers(element, event.type || event), function(i, handler){\\n result = handler.proxy(e)\\n if (e.isImmediatePropagationStopped()) return false\\n })\\n })\\n return result\\n }\\n\\n // shortcut methods for `.bind(event, fn)` for each event type\\n ;(\\'focusin focusout focus blur load resize scroll unload click dblclick \\'+\\n \\'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \\'+\\n \\'change select keydown keypress keyup error\\').split(\\' \\').forEach(function(event) {\\n $.fn[event] = function(callback) {\\n return (0 in arguments) ?\\n this.bind(event, callback) :\\n this.trigger(event)\\n }\\n })\\n\\n $.Event = function(type, props) {\\n if (!isString(type)) props = type, type = props.type\\n var event = document.createEvent(specialEvents[type] || \\'Events\\'), bubbles = true\\n if (props) for (var name in props) (name == \\'bubbles\\') ? (bubbles = !!props[name]) : (event[name] = props[name])\\n event.initEvent(type, bubbles, true)\\n return compatible(event)\\n }\\n\\n})(Zepto)\\n\\n;(function($){\\n var jsonpID = +new Date(),\\n document = window.document,\\n key,\\n name,\\n rscript = /<script\\\\b[^<]*(?:(?!<\\\\/script>)<[^<]*)*<\\\\/script>/gi,\\n scriptTypeRE = /^(?:text|application)\\\\/javascript/i,\\n xmlTypeRE = /^(?:text|application)\\\\/xml/i,\\n jsonType = \\'application/json\\',\\n htmlType = \\'text/html\\',\\n blankRE = /^\\\\s*$/,\\n originAnchor = document.createElement(\\'a\\')\\n\\n originAnchor.href = window.location.href\\n\\n // trigger a custom event and return false if it was cancelled\\n function triggerAndReturn(context, eventName, data) {\\n var event = $.Event(eventName)\\n $(context).trigger(event, data)\\n return !event.isDefaultPrevented()\\n }\\n\\n // trigger an Ajax \"global\" event\\n function triggerGlobal(settings, context, eventName, data) {\\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\\n }\\n\\n // Number of active Ajax requests\\n $.active = 0\\n\\n function ajaxStart(settings) {\\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, \\'ajaxStart\\')\\n }\\n function ajaxStop(settings) {\\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, \\'ajaxStop\\')\\n }\\n\\n // triggers an extra global event \"ajaxBeforeSend\" that\\'s like \"ajaxSend\" but cancelable\\n function ajaxBeforeSend(xhr, settings) {\\n var context = settings.context\\n if (settings.beforeSend.call(context, xhr, settings) === false ||\\n triggerGlobal(settings, context, \\'ajaxBeforeSend\\', [xhr, settings]) === false)\\n return false\\n\\n triggerGlobal(settings, context, \\'ajaxSend\\', [xhr, settings])\\n }\\n function ajaxSuccess(data, xhr, settings, deferred) {\\n var context = settings.context, status = \\'success\\'\\n settings.success.call(context, data, status, xhr)\\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\\n triggerGlobal(settings, context, \\'ajaxSuccess\\', [xhr, settings, data])\\n ajaxComplete(status, xhr, settings)\\n }\\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\\n function ajaxError(error, type, xhr, settings, deferred) {\\n var context = settings.context\\n settings.error.call(context, xhr, type, error)\\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\\n triggerGlobal(settings, context, \\'ajaxError\\', [xhr, settings, error || type])\\n ajaxComplete(type, xhr, settings)\\n }\\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\\n function ajaxComplete(status, xhr, settings) {\\n var context = settings.context\\n settings.complete.call(context, xhr, status)\\n triggerGlobal(settings, context, \\'ajaxComplete\\', [xhr, settings])\\n ajaxStop(settings)\\n }\\n\\n function ajaxDataFilter(data, type, settings) {\\n if (settings.dataFilter == empty) return data\\n var context = settings.context\\n return settings.dataFilter.call(context, data, type)\\n }\\n\\n // Empty function, used as default callback\\n function empty() {}\\n\\n $.ajaxJSONP = function(options, deferred){\\n if (!(\\'type\\' in options)) return $.ajax(options)\\n\\n var _callbackName = options.jsonpCallback,\\n callbackName = ($.isFunction(_callbackName) ?\\n _callbackName() : _callbackName) || (\\'Zepto\\' + (jsonpID++)),\\n script = document.createElement(\\'script\\'),\\n originalCallback = window[callbackName],\\n responseData,\\n abort = function(errorType) {\\n $(script).triggerHandler(\\'error\\', errorType || \\'abort\\')\\n },\\n xhr = { abort: abort }, abortTimeout\\n\\n if (deferred) deferred.promise(xhr)\\n\\n $(script).on(\\'load error\\', function(e, errorType){\\n clearTimeout(abortTimeout)\\n $(script).off().remove()\\n\\n if (e.type == \\'error\\' || !responseData) {\\n ajaxError(null, errorType || \\'error\\', xhr, options, deferred)\\n } else {\\n ajaxSuccess(responseData[0], xhr, options, deferred)\\n }\\n\\n window[callbackName] = originalCallback\\n if (responseData && $.isFunction(originalCallback))\\n originalCallback(responseData[0])\\n\\n originalCallback = responseData = undefined\\n })\\n\\n if (ajaxBeforeSend(xhr, options) === false) {\\n abort(\\'abort\\')\\n return xhr\\n }\\n\\n window[callbackName] = function(){\\n responseData = arguments\\n }\\n\\n script.src = options.url.replace(/\\\\?(.+)=\\\\?/, \\'?$1=\\' + callbackName)\\n document.head.appendChild(script)\\n\\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\\n abort(\\'timeout\\')\\n }, options.timeout)\\n\\n return xhr\\n }\\n\\n $.ajaxSettings = {\\n // Default type of request\\n type: \\'GET\\',\\n // Callback that is executed before request\\n beforeSend: empty,\\n // Callback that is executed if the request succeeds\\n success: empty,\\n // Callback that is executed the the server drops error\\n error: empty,\\n // Callback that is executed on request complete (both: error and success)\\n complete: empty,\\n // The context for the callbacks\\n context: null,\\n // Whether to trigger \"global\" Ajax events\\n global: true,\\n // Transport\\n xhr: function () {\\n return new window.XMLHttpRequest()\\n },\\n // MIME types mapping\\n // IIS returns Javascript as \"application/x-javascript\"\\n accepts: {\\n script: \\'text/javascript, application/javascript, application/x-javascript\\',\\n json: jsonType,\\n xml: \\'application/xml, text/xml\\',\\n html: htmlType,\\n text: \\'text/plain\\'\\n },\\n // Whether the request is to another domain\\n crossDomain: false,\\n // Default timeout\\n timeout: 0,\\n // Whether data should be serialized to string\\n processData: true,\\n // Whether the browser should be allowed to cache GET responses\\n cache: true,\\n //Used to handle the raw response data of XMLHttpRequest.\\n //This is a pre-filtering function to sanitize the response.\\n //The sanitized response should be returned\\n dataFilter: empty\\n }\\n\\n function mimeToDataType(mime) {\\n if (mime) mime = mime.split(\\';\\', 2)[0]\\n return mime && ( mime == htmlType ? \\'html\\' :\\n mime == jsonType ? \\'json\\' :\\n scriptTypeRE.test(mime) ? \\'script\\' :\\n xmlTypeRE.test(mime) && \\'xml\\' ) || \\'text\\'\\n }\\n\\n function appendQuery(url, query) {\\n if (query == \\'\\') return url\\n return (url + \\'&\\' + query).replace(/[&?]{1,2}/, \\'?\\')\\n }\\n\\n // serialize payload and append it to the URL for GET requests\\n function serializeData(options) {\\n if (options.processData && options.data && $.type(options.data) != \"string\")\\n options.data = $.param(options.data, options.traditional)\\n if (options.data && (!options.type || options.type.toUpperCase() == \\'GET\\' || \\'jsonp\\' == options.dataType))\\n options.url = appendQuery(options.url, options.data), options.data = undefined\\n }\\n\\n $.ajax = function(options){\\n var settings = $.extend({}, options || {}),\\n deferred = $.Deferred && $.Deferred(),\\n urlAnchor, hashIndex\\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\\n\\n ajaxStart(settings)\\n\\n if (!settings.crossDomain) {\\n urlAnchor = document.createElement(\\'a\\')\\n urlAnchor.href = settings.url\\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\\n urlAnchor.href = urlAnchor.href\\n settings.crossDomain = (originAnchor.protocol + \\'//\\' + originAnchor.host) !== (urlAnchor.protocol + \\'//\\' + urlAnchor.host)\\n }\\n\\n if (!settings.url) settings.url = window.location.toString()\\n if ((hashIndex = settings.url.indexOf(\\'#\\')) > -1) settings.url = settings.url.slice(0, hashIndex)\\n serializeData(settings)\\n\\n var dataType = settings.dataType, hasPlaceholder = /\\\\?.+=\\\\?/.test(settings.url)\\n if (hasPlaceholder) dataType = \\'jsonp\\'\\n\\n if (settings.cache === false || (\\n (!options || options.cache !== true) &&\\n (\\'script\\' == dataType || \\'jsonp\\' == dataType)\\n ))\\n settings.url = appendQuery(settings.url, \\'_=\\' + Date.now())\\n\\n if (\\'jsonp\\' == dataType) {\\n if (!hasPlaceholder)\\n settings.url = appendQuery(settings.url,\\n settings.jsonp ? (settings.jsonp + \\'=?\\') : settings.jsonp === false ? \\'\\' : \\'callback=?\\')\\n return $.ajaxJSONP(settings, deferred)\\n }\\n\\n var mime = settings.accepts[dataType],\\n headers = { },\\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\\n protocol = /^([\\\\w-]+:)\\\\/\\\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\\n xhr = settings.xhr(),\\n nativeSetHeader = xhr.setRequestHeader,\\n abortTimeout\\n\\n if (deferred) deferred.promise(xhr)\\n\\n if (!settings.crossDomain) setHeader(\\'X-Requested-With\\', \\'XMLHttpRequest\\')\\n setHeader(\\'Accept\\', mime || \\'*/*\\')\\n if (mime = settings.mimeType || mime) {\\n if (mime.indexOf(\\',\\') > -1) mime = mime.split(\\',\\', 2)[0]\\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\\n }\\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != \\'GET\\'))\\n setHeader(\\'Content-Type\\', settings.contentType || \\'application/x-www-form-urlencoded\\')\\n\\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\\n xhr.setRequestHeader = setHeader\\n\\n xhr.onreadystatechange = function(){\\n if (xhr.readyState == 4) {\\n xhr.onreadystatechange = empty\\n clearTimeout(abortTimeout)\\n var result, error = false\\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == \\'file:\\')) {\\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader(\\'content-type\\'))\\n\\n if (xhr.responseType == \\'arraybuffer\\' || xhr.responseType == \\'blob\\')\\n result = xhr.response\\n else {\\n result = xhr.responseText\\n\\n try {\\n // http://perfectionkills.com/global-eval-what-are-the-options/\\n // sanitize response accordingly if data filter callback provided\\n result = ajaxDataFilter(result, dataType, settings)\\n if (dataType == \\'script\\') (1,eval)(result)\\n else if (dataType == \\'xml\\') result = xhr.responseXML\\n else if (dataType == \\'json\\') result = blankRE.test(result) ? null : $.parseJSON(result)\\n } catch (e) { error = e }\\n\\n if (error) return ajaxError(error, \\'parsererror\\', xhr, settings, deferred)\\n }\\n\\n ajaxSuccess(result, xhr, settings, deferred)\\n } else {\\n ajaxError(xhr.statusText || null, xhr.status ? \\'error\\' : \\'abort\\', xhr, settings, deferred)\\n }\\n }\\n }\\n\\n if (ajaxBeforeSend(xhr, settings) === false) {\\n xhr.abort()\\n ajaxError(null, \\'abort\\', xhr, settings, deferred)\\n return xhr\\n }\\n\\n var async = \\'async\\' in settings ? settings.async : true\\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\\n\\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\\n\\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\\n\\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\\n xhr.onreadystatechange = empty\\n xhr.abort()\\n ajaxError(null, \\'timeout\\', xhr, settings, deferred)\\n }, settings.timeout)\\n\\n // avoid sending empty string (#319)\\n xhr.send(settings.data ? settings.data : null)\\n return xhr\\n }\\n\\n // handle optional data/success arguments\\n function parseArguments(url, data, success, dataType) {\\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\\n if (!$.isFunction(success)) dataType = success, success = undefined\\n return {\\n url: url\\n , data: data\\n , success: success\\n , dataType: dataType\\n }\\n }\\n\\n $.get = function(/* url, data, success, dataType */){\\n return $.ajax(parseArguments.apply(null, arguments))\\n }\\n\\n $.post = function(/* url, data, success, dataType */){\\n var options = parseArguments.apply(null, arguments)\\n options.type = \\'POST\\'\\n return $.ajax(options)\\n }\\n\\n $.getJSON = function(/* url, data, success */){\\n var options = parseArguments.apply(null, arguments)\\n options.dataType = \\'json\\'\\n return $.ajax(options)\\n }\\n\\n $.fn.load = function(url, data, success){\\n if (!this.length) return this\\n var self = this, parts = url.split(/\\\\s/), selector,\\n options = parseArguments(url, data, success),\\n callback = options.success\\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\\n options.success = function(response){\\n self.html(selector ?\\n $(\\'<div>\\').html(response.replace(rscript, \"\")).find(selector)\\n : response)\\n callback && callback.apply(self, arguments)\\n }\\n $.ajax(options)\\n return this\\n }\\n\\n var escape = encodeURIComponent\\n\\n function serialize(params, obj, traditional, scope){\\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\\n $.each(obj, function(key, value) {\\n type = $.type(value)\\n if (scope) key = traditional ? scope :\\n scope + \\'[\\' + (hash || type == \\'object\\' || type == \\'array\\' ? key : \\'\\') + \\']\\'\\n // handle data in serializeArray() format\\n if (!scope && array) params.add(value.name, value.value)\\n // recurse into nested objects\\n else if (type == \"array\" || (!traditional && type == \"object\"))\\n serialize(params, value, traditional, key)\\n else params.add(key, value)\\n })\\n }\\n\\n $.param = function(obj, traditional){\\n var params = []\\n params.add = function(key, value) {\\n if ($.isFunction(value)) value = value()\\n if (value == null) value = \"\"\\n this.push(escape(key) + \\'=\\' + escape(value))\\n }\\n serialize(params, obj, traditional)\\n return params.join(\\'&\\').replace(/%20/g, \\'+\\')\\n }\\n})(Zepto)\\n\\n;(function($){\\n $.fn.serializeArray = function() {\\n var name, type, result = [],\\n add = function(value) {\\n if (value.forEach) return value.forEach(add)\\n result.push({ name: name, value: value })\\n }\\n if (this[0]) $.each(this[0].elements, function(_, field){\\n type = field.type, name = field.name\\n if (name && field.nodeName.toLowerCase() != \\'fieldset\\' &&\\n !field.disabled && type != \\'submit\\' && type != \\'reset\\' && type != \\'button\\' && type != \\'file\\' &&\\n ((type != \\'radio\\' && type != \\'checkbox\\') || field.checked))\\n add($(field).val())\\n })\\n return result\\n }\\n\\n $.fn.serialize = function(){\\n var result = []\\n this.serializeArray().forEach(function(elm){\\n result.push(encodeURIComponent(elm.name) + \\'=\\' + encodeURIComponent(elm.value))\\n })\\n return result.join(\\'&\\')\\n }\\n\\n $.fn.submit = function(callback) {\\n if (0 in arguments) this.bind(\\'submit\\', callback)\\n else if (this.length) {\\n var event = $.Event(\\'submit\\')\\n this.eq(0).trigger(event)\\n if (!event.isDefaultPrevented()) this.get(0).submit()\\n }\\n return this\\n }\\n\\n})(Zepto)\\n\\n;(function(){\\n // getComputedStyle shouldn\\'t freak out when called\\n // without a valid element as argument\\n try {\\n getComputedStyle(undefined)\\n } catch(e) {\\n var nativeGetComputedStyle = getComputedStyle\\n window.getComputedStyle = function(element, pseudoElement){\\n try {\\n return nativeGetComputedStyle(element, pseudoElement)\\n } catch(e) {\\n return null\\n }\\n }\\n }\\n})()\\n return Zepto\\n}))\\n'},function(){(function(e){e.expr={\":\":{}},e.support={},e.fn.clone=function(){var t=e();return this.each(function(){t.push(this.cloneNode(!0))}),t},['Left','Top'].forEach(function(t,n){function o(e){return e&&'object'==typeof e&&'setInterval'in e}function i(e){return o(e)?e:!(9!==e.nodeType)&&(e.defaultView||e.parentWindow)}var a='scroll'+t;e.fn[a]=function(t){var o,s;return void 0===t?(o=this[0],!o)?null:(s=i(o),s?'pageXOffset'in s?s[n?'pageYOffset':'pageXOffset']:s.document.documentElement[a]||s.document.body[a]:o[a]):void this.each(function(){if(s=i(this),s){var o=n?e(s).scrollLeft():t,r=n?t:e(s).scrollTop();s.scrollTo(o,r)}else this[a]=t})}}),['width','height'].forEach(function(t){var n=t.replace(/./,function(e){return e[0].toUpperCase()});e.fn['inner'+n]=function(e){var n=this;if(n){var o=n[t]();return{width:['left','right'],height:['top','bottom']}[t].forEach(function(t){o+=parseInt(n.css('padding-'+t),10),e&&(o+=parseInt(n.css('margin-'+t),10))}),o}return null},e.fn['outer'+n]=function(e){var n=this;if(n){var o=n[t]();return{width:['left','right'],height:['top','bottom']}[t].forEach(function(t){e&&(o+=parseInt(n.css('margin-'+t),10))}),o}return null}}),e.proxy=function(t,n){if('string'==typeof n){var o=t[n];n=t,t=o}if(e.isFunction(t)){var i=Array.prototype.slice.call(arguments,2),a=function(){return t.apply(n,i.concat(Array.prototype.slice.call(arguments)))};return a.guid=t.guid=t.guid||a.guid||e.guid++,a}};var t=String.prototype.trim;e.trim=function(e,n){return!n&&t?t.call(e):(n=defaultToWhiteSpace(n),e.replace(new RegExp('^['+n+']+|['+n+']+$','g'),''))};var n=/^t(?:able|d|h)$/i,o=/^(?:body|html)$/i;e.fn.position=function(){if(!this[0])return null;var t=this[0],n=this.offsetParent(),i=this.offset(),a=o.test(n[0].nodeName)?{top:0,left:0}:n.offset();return i.top-=parseFloat(e(t).css('margin-top'))||0,i.left-=parseFloat(e(t).css('margin-left'))||0,a.top+=parseFloat(e(n[0]).css('border-top-width'))||0,a.left+=parseFloat(e(n[0]).css('border-left-width'))||0,{top:i.top-a.top,left:i.left-a.left}},e.fn.offsetParent=function(){var t=e();return this.each(function(){for(var n=this.offsetParent||document.body;n&&!o.test(n.nodeName)&&'static'===e(n).css('position');)n=n.offsetParent;t.push(n)}),t}})(Zepto)}])});\r\n//# sourceMappingURL=goldenlayout.js.map","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./webAO/ui.js","webpack:///./webAO/golden/js/goldenlayout.js","webpack:///(webpack)/buildin/module.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","golden","GoldenLayout","settings","showPopoutIcon","showCloseIcon","dimensions","minItemHeight","content","type","width","componentName","title","componentState","id","height","registerComponent","container","template","document","querySelector","getElement","html","init","e","_typeof","__WEBPACK_AMD_DEFINE_ARRAY__","undefined","__WEBPACK_AMD_DEFINE_RESULT__","__WEBPACK_AMD_DEFINE_FACTORY__","apply","self","Math","min","floor","max","configurable","$","zepto","touches","targetTouches","originalEvent","j","a","push","window","location","hash","match","RegExp","search","substr","split","length","b","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","setTimeout","g","Array","Error","indexOf","Function","concat","slice","arguments","this","Date","now","getTime","f","random","toString","replace","k","trim","Int8Array","_class","_classCallCheck","_mSubscriptions","on","h","fn","ctx","emit","unshift","unbind","splice","off","trigger","version","__e","_o$b","_this","_possibleConstructorReturn","__proto__","getPrototypeOf","config","_extendItemNode","contentItems","parent","isInitialised","isMaximised","isRoot","isRow","isColumn","isStack","isComponent","layoutManager","_pendingEventPropagations","_throttledEvents","_propagateEvent","_createContentItems","_inherits","_createClass","callDownwards","_$destroy","isClosable","removeChild","undisplayChild","_$init","_$normalizeContentItem","element","parentNode","replaceChild","header","tabs","contentItem","createPopout","emitBubblingEvent","preventDefault","_$minimiseItem","_$maximiseItem","selectedItem","selectItem","addClass","removeClass","hasId","getItemsByFilter","_$getItemsByProperty","instance","dropTargetIndicator","highlightArea","addChild","_callOnActiveComponents","hide","updateSize","show","getItemsByType","getActiveContentItem","remove","offset","x1","left","y1","top","x2","y2","surface","setSize","childElementContainer","append","createContentItem","isPropagationStopped","_scheduleEventPropagationToLayoutManager","origin","_propagateEventToLayoutManager","__g","round","_s$a","_this2","_splitterSize","borderWidth","_splitterGrabSize","borderGrabWidth","_isColumn","_dimension","_splitter","_splitterPosition","_splitterMinPosition","_splitterMaxPosition","_createSplitter","after","_isDocked","before","_validateDocking","_calculateRelativeSizes","_setAbsoluteSizes","headerHeight","_docker","docked","size","itemSize","column","first","last","row","position","_","dimension","realSize","toggleClass","_header","dock","_calculateAbsoluteSizes","additionalPixel","itemSizes","totalWidth","totalHeight","_respectMinItemWidth","minItemWidth","_onSplitterDrag","_onSplitterDragStop","_onSplitterDragStart","_setDockable","_$setClosable","minWidth","minHeight","horizontal","vertical","_getItemsForSplitter","_getMinimumDimensions","css","_o$b2","_this3","_timeout","_eElement","_oDocument","_eBody","body","_nButtonCode","_nDelay","_nDistance","_nX","_nY","_nOriginalX","_nOriginalY","_bDragging","_fMove","onMouseMove","_fUp","onMouseUp","_fDown","onMouseDown","button","_getCoordinates","x","y","one","_startDrag","abs","clearTimeout","find","pageX","pageY","TypeError","_class2","_keys","_values","_nextLevel","parseInt","_o$a","_this4","_containerElement","tabDropPlaceholder","_$highlightDropZone","side","_a$a","_this5","_activeContentItem","hasHeaders","popout","labels","maximise","showMaximiseIcon","close","minimise","_dropZones","_dropSegment","_contentAreaDimensions","_dropIndex","_setupHeaderPosition","_$validateClosability","_sided","createTab","_$hide","activeItemIndex","setActiveContentItem","_$show","activeContentItem","removeTab","hideTab","_isClosable","_resetHeaderDropZone","hoverArea","_highlightHeaderDropZone","_highlightBodyDropZone","_$getArea","right","bottom","innerHeight","toggleMaximise","toggle","_side","keys","ceil","isNaN","F","G","u","S","P","B","W","v","virtual","R","U","createElement","_class3","_reactComponent","_originalComponentWillUpdate","_container","_initialState","_reactClass","_getReactClass","_render","_destroy","ReactDOM","render","_getReactComponent","componentWillUpdate","_onUpdate","getState","setState","unmountComponentAtNode","_config","component","getComponent","glEventHub","eventHub","glContainer","extend","props","React","_o$b3","_this6","_layoutManager","_dontPropagateToParent","_childEventSource","_onEventFromThis","_boundOnEventFromChild","_onEventFromChild","isSubWindow","_propagateToParent","_propagateToChildren","__gl","__glArgs","createEvent","opener","initEvent","createEventObject","eventType","eventName","dispatchEvent","fireEvent","openPopouts","getGlInstance","_$onEventFromParent","_class4","_Error","_this7","message","node","_o$b4","_this8","selectionEnabled","_onHeaderClick","tabsContainer","tabDropdownContainer","controlsContainer","_updateTabSizes","tabsMarkedForRemoval","closeButton","dockButton","tabDropdownButton","hideAdditionalTabsDropdown","_hideAdditionalTabsDropdown","mouseup","_lastVisibleTabIndex","_tabControlOffset","tabControlOffset","_createControls","setActive","reorderOnTabMenuClick","_canDestroy","_showAdditionalTabsDropdown","tabDropdown","_getHeaderSetting","_onPopoutClick","attr","popoutWholeStack","target","select","outerWidth","tabOverlapAllowance","tab","outerHeight","z-index","margin-left","_class5","titleElement","closeElement","isActive","setTitle","reorderEnabled","_dragListener","_onDragStart","destroy","_onTabClickFn","_onTabClick","_onCloseClickFn","_onCloseClick","_onCloseMousedown","stopPropagation","_o$b5","_this9","_contentItem","_originalParent","_area","_lastValidArea","_onDrag","_onDrop","_undisplayTree","_$calculateItemAreas","_setDimensions","_minX","_minY","_maxX","_maxY","_width","_height","_setDropPosition","constrainDragToContainer","_updateTree","_$onDrop","_$setParent","dragProxyWidth","dragProxyHeight","_class6","_action","_o$a2","_this10","_element","_$setSize","shown","_$shown","_o$b6","_this11","isHidden","_contentElement","_s$b","_this12","_dimensions","_parentId","_indexInParent","_popoutWindow","_id","_createWindow","screenX","screenLeft","screenY","screenTop","toConfig","parentId","indexInParent","__glInstance","_$closeWindow","getWindow","root","getItemsById","_createUrl","_serializeWindowOptions","innerWidth","menubar","toolbar","personalbar","resizable","scrollbars","status","open","_positionWindow","_onClose","setInterval","_onInitialised","clearInterval","blockedPopoutsThrowError","join","minifyConfig","localStorage","setItem","href","moveTo","focus","popIn","D","w","ES6","_a$b","_this13","_isFullPage","_resizeTimeoutId","_components","lm-react-component","_itemAreas","_resizeFunction","_onResize","_unloadFunction","_onUnload","_maximisedItem","_maximisePlaceholder","_creationTimeoutPassed","_subWindowsCreated","_dragSources","_updatingColumnsResponsive","_firstLoad","_createConfig","transitionIndicator","_typeToItem","stack","unminifyConfig","_$reconcilePopoutWindows","maximisedItemId","_createSubWindows","readyState","ready","_adjustToWindowMode","_setContainer","_create","_bindEvents","_adjustColumnsResponsive","forEach","_itemConfig","addId","deselect","prepend","removeId","Infinity","_getAllContentItems","_$createRootItemAreas","isPlainObject","closed","resize","getItem","JSON","parse","removeItem","popin","click","offsetHeight","margin","padding","overflow","closePopoutsOnUnload","_useResponsiveLayout","_findAllStackContainers","_addChildContentItemsToContainer","responsiveMode","_findAllStackContainersRecursive","default","propertyIsEnumerable","copyright","valueOf","writable","style","display","appendChild","src","contentWindow","write","defineProperties","documentElement","_class7","_isVertical","_size","_grabSize","_createElement","stringify","_class8","_createDragListener","transitionElements","_class9","_class10","_toElement","_fromDimensions","_totalAnimationDuration","_animationStartTime","_measure","opacity","_nextAnimationFrame","console","error","log","execScript","attachEvent","addEventListener","eval","expr",":","support","clone","each","cloneNode","nodeType","defaultView","parentWindow","scrollLeft","scrollTop","scrollTo","toUpperCase","proxy","isFunction","guid","String","defaultToWhiteSpace","offsetParent","test","nodeName","parseFloat","Zepto","webpackPolyfill","deprecate","paths","children"],"mappings":"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","file":"ui.b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import GoldenLayout from \"./golden/js/goldenlayout.js\";\r\n\r\nvar config = {\r\n settings: {\r\n showPopoutIcon: false,\r\n showCloseIcon: false\r\n },\r\n dimensions: {\r\n minItemHeight: 40\r\n },\r\n content: [\r\n {\r\n type: \"row\",\r\n content: [\r\n {\r\n type: \"column\",\r\n width: 40,\r\n content: [\r\n {\r\n type: \"component\",\r\n componentName: \"template\",\r\n title: \"Game\",\r\n componentState: { id: \"client_wrapper\" }\r\n }\r\n ]\r\n },\r\n {\r\n type: \"column\",\r\n content: [\r\n {\r\n type: \"row\",\r\n\t\t\t\t\t\theight: 65,\r\n\t\t\t\t\t\tcontent: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: \"stack\",\r\n\t\t\t\t\t\t\t\tcontent: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttype: \"component\",\r\n\t\t\t\t\t\t\t\t\t\ttitle: \"Main\",\r\n\t\t\t\t\t\t\t\t\t\tcomponentName: \"template\",\r\n\t\t\t\t\t\t\t\t\t\tcomponentState: { id: \"mainmenu\" }\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttype: \"component\",\r\n\t\t\t\t\t\t\t\t\t\ttitle: \"Log\",\r\n\t\t\t\t\t\t\t\t\t\tcomponentName: \"template\",\r\n\t\t\t\t\t\t\t\t\t\tcomponentState: { id: \"log\" }\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n type: \"component\",\r\n title: \"Music\",\r\n\t\t\t\t\t\t\t\twidth: 30,\r\n componentName: \"template\",\r\n componentState: { id: \"music\" }\r\n }\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t]\r\n },\r\n {\r\n type: \"row\",\r\n content: [\r\n {\r\n\t\t\t\t\t\t\t\ttype: \"component\",\r\n\t\t\t\t\t\t\t\ttitle: \"Server chat\",\r\n\t\t\t\t\t\t\t\tcomponentName: \"template\",\r\n\t\t\t\t\t\t\t\tcomponentState: { id: \"ooc\" }\r\n\t\t\t\t\t\t\t}\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }]\r\n};\r\n\r\nvar golden = new GoldenLayout(config);\r\ngolden.registerComponent(\"template\", function(container, componentState) {\r\n let template = document.querySelector(`#${componentState.id}`);\r\n container.getElement().html(template.content);\r\n // TODO: support multiple locales\r\n // container.setTitle(document.querySelector(`#${componentState.id} meta[name='frame-title']`).getAttribute(\"content\"));\r\n});\r\ngolden.init();","(function(e,t){'object'==typeof exports&&'object'==typeof module?module.exports=t():'function'==typeof define&&define.amd?define('GoldenLayout',[],t):'object'==typeof exports?exports.GoldenLayout=t():e.GoldenLayout=t()})('undefined'==typeof self?this:self,function(){var e=Math.min,t=Math.floor,n=Math.max;return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e['default']}:function(){return e};return t.d(n,'a',n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p='',t(t.s=35)}([function(e,t,n){'use strict';function o(e){var t=location.hash.match(new RegExp(e+'=([^&]*)'));return t?t[1]:null}t.e=function(e){return $.zepto?e.touches?e.targetTouches[0]:e:e.originalEvent&&e.originalEvent.touches?e.originalEvent.touches[0]:e},t.j=function(e){var t,n;if('function'==typeof a.a)return a()(e);for(n in t=[],e)t.push(n);return t},t.d=function(e){if(window.location.hash)return o(e);if(!window.location.search)return null;var t,n,i=window.location.search.substr(1).split('&'),a={};for(n=0;n<i.length;n++)t=i[n].split('='),a[t[0]]=t[1];return a[e]||null},t.b=function(e,t){for(var n in t)e[n]=t[n];return e},t.a=function(e){return(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)})(function(){e()})},t.g=function(e,t){if(!(t instanceof Array))throw new Error('Haystack is not an Array');if(t.indexOf)return t.indexOf(e);for(var n=0;n<t.length;n++)if(t[n]===e)return n;return-1},n.d(t,'h',function(){return l}),t.c=function(e,t,n){if(void 0!==Function.prototype.bind)return Function.prototype.bind.apply(e,[t].concat(n||[]));var o=function(){var i=(n||[]).concat(Array.prototype.slice.call(arguments,0));return this instanceof o?void e.apply(this,i):e.apply(t,i)};return o.prototype=e.prototype,o},t.i=function(){return'function'==typeof Date.now?Date.now():new Date().getTime()},t.f=function(){return(1e15*Math.random()).toString(36).replace('.','')},t.k=function(e){return $.trim(e.replace(/(<([^>]+)>)/ig,''))};var i=n(40),a=n.n(i),s=n(60),r=n.n(s),l='function'!=typeof /./&&'object'!=typeof Int8Array?function(e){return'function'==typeof e||!1}:function(e){return'[object Function]'===toString.call(e)}},function(e,t,n){'use strict';var o=n(0);const a='__all';t.a=a;t.b=class{constructor(){this._mSubscriptions={},this._mSubscriptions[a]=[],this.on=function(e,t,n){if(!Object(o.h)(t))throw new Error('Tried to listen to event '+e+' with non-function callback '+t);this._mSubscriptions[e]||(this._mSubscriptions[e]=[]),this._mSubscriptions[e].push({fn:t,ctx:n})},this.emit=function(e){var t,n,o;o=Array.prototype.slice.call(arguments,1);var i=this._mSubscriptions[e];if(i)for(i=i.slice(),t=0;t<i.length;t++)n=i[t].ctx||{},i[t].fn.apply(n,o);o.unshift(e);var s=this._mSubscriptions[a].slice();for(t=0;t<s.length;t++)n=s[t].ctx||{},s[t].fn.apply(n,o)},this.unbind=function(e,t,n){if(!this._mSubscriptions[e])throw new Error('No subscribtions to unsubscribe for event '+e);var o,i=!1;for(o=0;o<this._mSubscriptions[e].length;o++)t&&this._mSubscriptions[e][o].fn!==t||n&&n!==this._mSubscriptions[e][o].ctx||(this._mSubscriptions[e].splice(o,1),i=!0);if(!1==i)throw new Error('Nothing to unbind for '+e)},this.off=this.unbind,this.trigger=this.emit}}},function(e){var t=e.exports={version:'2.5.6'};'number'==typeof __e&&(__e=t)},function(e,t,n){'use strict';var o=n(1),i=n(26),a=n(12),s=n(27),r=n(66),l=n(0);class c extends o.b{constructor(e,t,n){super(),this.config=this._extendItemNode(t),this.type=t.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=e,this._pendingEventPropagations={},this._throttledEvents=['stateChanged'],this.on(o.a,this._propagateEvent,this),t.content&&this._createContentItems(t)}setSize(){throw new Error('Abstract Method')}callDownwards(e,t,n,o){var a;for(!0!==n&&!0!==o&&this[e].apply(this,t||[]),a=0;a<this.contentItems.length;a++)this.contentItems[a].callDownwards(e,t,n);!0===n&&!0!==o&&this[e].apply(this,t||[])}removeChild(e,t){var n=Object(l.g)(e,this.contentItems);if(-1===n)throw new Error('Can\\'t remove child item. Unknown content item');!0!==t&&this.contentItems[n]._$destroy(),this.contentItems.splice(n,1),this.config.content.splice(n,1),0<this.contentItems.length?this.callDownwards('setSize'):!(this instanceof a.a)&&!0===this.config.isClosable&&this.parent.removeChild(this)}undisplayChild(e){var t=Object(l.g)(e,this.contentItems);if(-1===t)throw new Error('Can\\'t remove child item. Unknown content item');this instanceof a.a||!0!==this.config.isClosable||this.parent.undisplayChild(this)}addChild(e,t){t===void 0&&(t=this.contentItems.length),this.contentItems.splice(t,0,e),this.config.content===void 0&&(this.config.content=[]),this.config.content.splice(t,0,e.config),e.parent=this,!0===e.parent.isInitialised&&!1===e.isInitialised&&e._$init()}replaceChild(e,t,n){t=this.layoutManager._$normalizeContentItem(t);var o=Object(l.g)(e,this.contentItems),i=e.element[0].parentNode;if(-1===o)throw new Error('Can\\'t replace child. oldChild is not child of this');i.replaceChild(t.element[0],e.element[0]),!0===n&&(e.parent=null,e._$destroy()),this.contentItems[o]=t,t.parent=this,this.isStack&&(this.header.tabs[o].contentItem=t),!0===t.parent.isInitialised&&!1===t.isInitialised&&t._$init(),this.callDownwards('setSize')}remove(){this.parent.removeChild(this)}popout(){var e=this.layoutManager.createPopout(this);return this.emitBubblingEvent('stateChanged'),e}toggleMaximise(t){t&&t.preventDefault(),!0===this.isMaximised?this.layoutManager._$minimiseItem(this):this.layoutManager._$maximiseItem(this),this.isMaximised=!this.isMaximised,this.emitBubblingEvent('stateChanged')}select(){this.layoutManager.selectedItem!==this&&(this.layoutManager.selectItem(this,!0),this.element.addClass('lm_selected'))}deselect(){this.layoutManager.selectedItem===this&&(this.layoutManager.selectedItem=null,this.element.removeClass('lm_selected'))}setTitle(e){this.config.title=e,this.emit('titleChanged',e),this.emit('stateChanged')}hasId(e){if(!this.config.id)return!1;return'string'==typeof this.config.id?this.config.id===e:this.config.id instanceof Array?-1!==Object(l.g)(e,this.config.id):void 0}addId(e){this.hasId(e)||(this.config.id?'string'==typeof this.config.id?this.config.id=[this.config.id,e]:this.config.id instanceof Array&&this.config.id.push(e):this.config.id=e)}removeId(e){if(!this.hasId(e))throw new Error('Id not found');if('string'==typeof this.config.id)delete this.config.id;else if(this.config.id instanceof Array){var t=Object(l.g)(e,this.config.id);this.config.id.splice(t,1)}}getItemsByFilter(e){var t=[],n=function(o){for(var a=0;a<o.contentItems.length;a++)!0===e(o.contentItems[a])&&t.push(o.contentItems[a]),n(o.contentItems[a])};return n(this),t}getItemsById(e){return this.getItemsByFilter(function(t){return t.config.id instanceof Array?-1!==Object(l.g)(e,t.config.id):t.config.id===e})}getItemsByType(e){return this._$getItemsByProperty('type',e)}getComponentsByName(e){var t,n=this._$getItemsByProperty('componentName',e),o=[];for(t=0;t<n.length;t++)o.push(n[t].instance);return o}_$getItemsByProperty(e,t){return this.getItemsByFilter(function(n){return n[e]===t})}_$setParent(e){this.parent=e}_$highlightDropZone(e,t,n){this.layoutManager.dropTargetIndicator.highlightArea(n)}_$onDrop(e){this.addChild(e)}_$hide(){this._callOnActiveComponents('hide'),this.element.hide(),this.layoutManager.updateSize()}_$show(){this._callOnActiveComponents('show'),this.element.show(),this.layoutManager.updateSize()}_callOnActiveComponents(e){var t,n,o=this.getItemsByType('stack');for(n=0;n<o.length;n++)t=o[n].getActiveContentItem(),t&&t.isComponent&&t.container[e]()}_$destroy(){this.emitBubblingEvent('beforeItemDestroyed'),this.callDownwards('_$destroy',[],!0,!0),this.element.remove(),this.emitBubblingEvent('itemDestroyed')}_$getArea(e){e=e||this.element;var t=e.offset(),n=e.width(),o=e.height();return{x1:t.left,y1:t.top,x2:t.left+n,y2:t.top+o,surface:n*o,contentItem:this}}_$init(){var e;for(this.setSize(),e=0;e<this.contentItems.length;e++)this.childElementContainer.append(this.contentItems[e].element);this.isInitialised=!0,this.emitBubblingEvent('itemCreated'),this.emitBubblingEvent(this.type+'Created')}emitBubblingEvent(e){var t=new i.a(e,this);this.emit(e,t)}_createContentItems(e){var t,n;if(!(e.content instanceof Array))throw new s.a('content must be an Array',e);for(n=0;n<e.content.length;n++)t=this.layoutManager.createContentItem(e.content[n],this),this.contentItems.push(t)}_extendItemNode(e){for(var t in r.a)void 0===e[t]&&(e[t]=r.a[t]);return e}_propagateEvent(e,t){t instanceof i.a&&!1===t.isPropagationStopped&&!0===this.isInitialised&&(!1===this.isRoot&&this.parent?this.parent.emit.apply(this.parent,Array.prototype.slice.call(arguments,0)):this._scheduleEventPropagationToLayoutManager(e,t))}_scheduleEventPropagationToLayoutManager(e,t){-1===Object(l.g)(e,this._throttledEvents)?this.layoutManager.emit(e,t.origin):!0!==this._pendingEventPropagations[e]&&(this._pendingEventPropagations[e]=!0,Object(l.a)(Object(l.c)(this._propagateEventToLayoutManager,this,[e,t])))}_propagateEventToLayoutManager(e,t){this._pendingEventPropagations[e]=!1,this.layoutManager.emit(e,t)}}t.a=c},function(e){var t=e.exports='undefined'!=typeof window&&window.Math==Math?window:'undefined'!=typeof self&&self.Math==Math?self:Function('return this')();'number'==typeof __g&&(__g=t)},function(e,t,n){e.exports=!n(10)(function(){return 7!=Object.defineProperty({},'a',{get:function(){return 7}}).a})},function(e,o,i){'use strict';var a=Math.round,s=i(3),r=i(13),l=i(67),c=i(0);class p extends s.a{constructor(e,t,n,o){super(t,n,o),this.isRow=!e,this.isColumn=e,this.element=$('<div class=\"lm_item lm_'+(e?'column':'row')+'\"></div>'),this.childElementContainer=this.element,this._splitterSize=t.config.dimensions.borderWidth,this._splitterGrabSize=t.config.dimensions.borderGrabWidth,this._isColumn=e,this._dimension=e?'height':'width',this._splitter=[],this._splitterPosition=null,this._splitterMinPosition=null,this._splitterMaxPosition=null}addChild(e,t,o){var a,r,l,i;if(e=this.layoutManager._$normalizeContentItem(e,this),void 0===t&&(t=this.contentItems.length),0<this.contentItems.length?(i=this._createSplitter(n(0,t-1)).element,0<t?(this.contentItems[t-1].element.after(i),i.after(e.element),this._isDocked(t-1)&&(this._splitter[t-1].element.hide(),this._splitter[t].element.show())):(this.contentItems[0].element.before(i),i.before(e.element))):this.childElementContainer.append(e.element),s.a.prototype.addChild.call(this,e,t),a=100*(1/this.contentItems.length),!0===o)return void this.emitBubblingEvent('stateChanged');for(l=0;l<this.contentItems.length;l++)this.contentItems[l]===e?e.config[this._dimension]=a:(r=this.contentItems[l].config[this._dimension]*=(100-a)/100,this.contentItems[l].config[this._dimension]=r);this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged'),this._validateDocking()}undisplayChild(e){var t,o=e.config[this._dimension],i=Object(c.g)(e,this.contentItems),a=n(i-1,0);if(-1===i)throw new Error('Can\\'t undisplay child. ContentItem is not child of this Row or Column');this._splitter[a]&&this._splitter[a].element.hide(),a<this._splitter.length&&this._isDocked(a)&&this._splitter[a].element.hide();var r=this._isDocked();for(t=0;t<this.contentItems.length;t++)this.contentItems[t]===e?this.contentItems[t].config[this._dimension]=0:this._isDocked(t)||(this.contentItems[t].config[this._dimension]+=o/(this.contentItems.length-1-r));1===this.contentItems.length&&s.a.prototype.undisplayChild.call(this,e),this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged')}removeChild(e,t){var o,i,a=e.config[this._dimension],r=Object(c.g)(e,this.contentItems),l=n(r-1,0);if(-1===r)throw new Error('Can\\'t remove child. ContentItem is not child of this Row or Column');this._splitter[l]&&(this._splitter[l]._$destroy(),this._splitter.splice(l,1)),l<this._splitter.length&&this._isDocked(l)&&this._splitter[l].element.hide();var p=this._isDocked();for(o=0;o<this.contentItems.length;o++)this.contentItems[o]!==e&&(this._isDocked(o)||(this.contentItems[o].config[this._dimension]+=a/(this.contentItems.length-1-p)));s.a.prototype.removeChild.call(this,e,t),1===this.contentItems.length&&!0===this.config.isClosable?(i=this.contentItems[0],this.contentItems=[],this.parent.replaceChild(this,i,!0),this._validateDocking(this.parent)):(this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged'),this._validateDocking())}replaceChild(e,t){var n=e.config[this._dimension];s.a.prototype.replaceChild.call(this,e,t),t.config[this._dimension]=n,this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged')}setSize(){0<this.contentItems.length&&(this._calculateRelativeSizes(),this._setAbsoluteSizes()),this.emitBubblingEvent('stateChanged'),this.emit('resize')}dock(e,t,o){if(1===this.contentItems.length)throw new Error('Can\\'t dock child when it single');var a=e.config[this._dimension],s=this.layoutManager.config.dimensions.headerHeight,r=Object(c.g)(e,this.contentItems),l=n(r-1,0);if(-1===r)throw new Error('Can\\'t dock child. ContentItem is not child of this Row or Column');var p,i=e._docker&&e._docker.docked;if('undefined'==typeof t||t!=i){if(i){for(this._splitter[l].element.show(),p=0;p<this.contentItems.length;p++){var d=e._docker.size;this.contentItems[p]===e?e.config[this._dimension]=d:(itemSize=this.contentItems[p].config[this._dimension]*=(100-d)/100,this.contentItems[p].config[this._dimension]=itemSize)}e._docker={docked:!1}}else{if(2>this.contentItems.length-this._isDocked())throw new Error('Can\\'t dock child when it is last in '+this.config.type);var m={column:{first:'top',last:'bottom'},row:{first:'left',last:'right'}}[this.config.type][r?'last':'first'];e.header.position()!=m&&e.header.position(m),this._splitter[l]&&this._splitter[l].element.hide();var _=this._isDocked();for(p=0;p<this.contentItems.length;p++)this.contentItems[p]===e?this.contentItems[p].config[this._dimension]=0:this._isDocked(p)||(this.contentItems[p].config[this._dimension]+=a/(this.contentItems.length-1-_));e._docker={dimension:this._dimension,size:a,realSize:e.element[this._dimension]()-s,docked:!0},o&&e.childElementContainer[this._dimension](0)}e.element.toggleClass('lm_docked',e._docker.docked),this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged'),this._validateDocking()}}_$init(){if(!0!==this.isInitialised){var e;for(s.a.prototype._$init.call(this),e=0;e<this.contentItems.length-1;e++)this.contentItems[e].element.after(this._createSplitter(e).element);for(e=0;e<this.contentItems.length;e++)this.contentItems[e]._header&&this.contentItems[e]._header.docked&&this.dock(this.contentItems[e],!0,!0)}}_setAbsoluteSizes(){var e,t=this._calculateAbsoluteSizes();for(e=0;e<this.contentItems.length;e++)0<t.additionalPixel-e&&t.itemSizes[e]++,this._isColumn?(this.contentItems[e].element.width(t.totalWidth),this.contentItems[e].element.height(t.itemSizes[e])):(this.contentItems[e].element.width(t.itemSizes[e]),this.contentItems[e].element.height(t.totalHeight))}_calculateAbsoluteSizes(){var e,n,o,i=(this.contentItems.length-1)*this._splitterSize,a=this.layoutManager.config.dimensions.headerHeight,s=this.element.width(),r=this.element.height(),l=0,c=[];for(this._isColumn?r-=i:s-=i,e=0;e<this.contentItems.length;e++)this._isDocked(e)&&(this._isColumn?r-=a-this._splitterSize:s-=a-this._splitterSize);for(e=0;e<this.contentItems.length;e++)o=this._isColumn?t(r*(this.contentItems[e].config.height/100)):t(s*(this.contentItems[e].config.width/100)),this._isDocked(e)&&(o=a),l+=o,c.push(o);return n=t((this._isColumn?r:s)-l),{itemSizes:c,additionalPixel:n,totalWidth:s,totalHeight:r}}_calculateRelativeSizes(){var e,t=0,n=[],o=this._isColumn?'height':'width';for(e=0;e<this.contentItems.length;e++)void 0===this.contentItems[e].config[o]?n.push(this.contentItems[e]):t+=this.contentItems[e].config[o];if(100===a(t))return void this._respectMinItemWidth();if(100>a(t)&&0<n.length){for(e=0;e<n.length;e++)n[e].config[o]=(100-t)/n.length;return void this._respectMinItemWidth()}if(100<a(t))for(e=0;e<n.length;e++)n[e].config[o]=50,t+=50;for(e=0;e<this.contentItems.length;e++)this.contentItems[e].config[o]=100*(this.contentItems[e].config[o]/t);this._respectMinItemWidth()}_respectMinItemWidth(){var e,t,n,o=this.layoutManager.config.dimensions?this.layoutManager.config.dimensions.minItemWidth||0:0,s=null,r=[],l=0,c=0,p=0,d=0,m=null,_=[];if(!(this._isColumn||!o||1>=this.contentItems.length)){s=this._calculateAbsoluteSizes();for(var g=0;g<this.contentItems.length;g++)m=this.contentItems[g],d=s.itemSizes[g],d<o?(c+=o-d,n={width:o}):(l+=d-o,n={width:d},r.push(n)),_.push(n);if(!(0==c||c>l)){for(e=c/l,p=c,g=0;g<r.length;g++)n=r[g],t=a((n.width-o)*e),p-=t,n.width-=t;for(0!==p&&(_[_.length-1].width-=p),g=0;g<this.contentItems.length;g++)this.contentItems[g].config.width=100*(_[g].width/s.totalWidth)}}}_createSplitter(e){var t;return t=new l.a(this._isColumn,this._splitterSize,this._splitterGrabSize),t.on('drag',Object(c.c)(this._onSplitterDrag,this,[t]),this),t.on('dragStop',Object(c.c)(this._onSplitterDragStop,this,[t]),this),t.on('dragStart',Object(c.c)(this._onSplitterDragStart,this,[t]),this),this._splitter.splice(e,0,t),t}_getItemsForSplitter(e){var t=Object(c.g)(e,this._splitter);return{before:this.contentItems[t],after:this.contentItems[t+1]}}_isDocked(e){if('undefined'==typeof e){for(var t=0,n=0;n<this.contentItems.length;++n)this._isDocked(n)&&t++;return t}return e<this.contentItems.length?this.contentItems[e]._docker&&this.contentItems[e]._docker.docked:void 0}_validateDocking(e){e=e||this;for(var t=1<e.contentItems.length-e._isDocked(),n=0;n<e.contentItems.length;++n)e.contentItems[n]instanceof r.a&&(e.contentItems[n].header._setDockable(e._isDocked(n)||t),e.contentItems[n].header._$setClosable(t))}_getMinimumDimensions(e){for(var t=0,o=0,a=0;a<e.length;++a)t=n(e[a].minWidth||0,t),o=n(e[a].minHeight||0,o);return{horizontal:t,vertical:o}}_onSplitterDragStart(e){var t=this._getItemsForSplitter(e),n=this.layoutManager.config.dimensions[this._isColumn?'minItemHeight':'minItemWidth'],o=this._getMinimumDimensions(t.before.config.content),i=this._isColumn?o.vertical:o.horizontal,a=this._getMinimumDimensions(t.after.config.content),s=this._isColumn?a.vertical:a.horizontal;this._splitterPosition=0,this._splitterMinPosition=-1*(t.before.element[this._dimension]()-(i||n)),this._splitterMaxPosition=t.after.element[this._dimension]()-(s||n)}_onSplitterDrag(e,t,n){var o=this._isColumn?n:t;o>this._splitterMinPosition&&o<this._splitterMaxPosition&&(this._splitterPosition=o,e.element.css(this._isColumn?'top':'left',o))}_onSplitterDragStop(e){var t=this._getItemsForSplitter(e),n=t.before.element[this._dimension](),o=t.after.element[this._dimension](),i=(this._splitterPosition+n)/(n+o),a=t.before.config[this._dimension]+t.after.config[this._dimension];t.before.config[this._dimension]=i*a,t.after.config[this._dimension]=(1-i)*a,e.element.css({top:0,left:0}),Object(c.a)(Object(c.c)(this.callDownwards,this,['setSize']))}}o.a=p},function(e,t,n){'use strict';var o=n(1),i=n(0);class a extends o.b{constructor(e,t){super(),this._timeout=null,this._eElement=$(e),this._oDocument=$(document),this._eBody=$(document.body),this._nButtonCode=t||0,this._nDelay=200,this._nDistance=10,this._nX=0,this._nY=0,this._nOriginalX=0,this._nOriginalY=0,this._bDragging=!1,this._fMove=Object(i.c)(this.onMouseMove,this),this._fUp=Object(i.c)(this.onMouseUp,this),this._fDown=Object(i.c)(this.onMouseDown,this),this._eElement.on('mousedown touchstart',this._fDown)}destroy(){this._eElement.unbind('mousedown touchstart',this._fDown),this._oDocument.unbind('mouseup touchend',this._fUp),this._eElement=null,this._oDocument=null,this._eBody=null}onMouseDown(e){if(e.preventDefault(),0==e.button||'touchstart'===e.type){var t=this._getCoordinates(e);this._nOriginalX=t.x,this._nOriginalY=t.y,this._oDocument.on('mousemove touchmove',this._fMove),this._oDocument.one('mouseup touchend',this._fUp),this._timeout=setTimeout(Object(i.c)(this._startDrag,this),this._nDelay)}}onMouseMove(e){var t=Math.abs;if(null!=this._timeout){e.preventDefault();var n=this._getCoordinates(e);this._nX=n.x-this._nOriginalX,this._nY=n.y-this._nOriginalY,!1===this._bDragging&&(t(this._nX)>this._nDistance||t(this._nY)>this._nDistance)&&(clearTimeout(this._timeout),this._startDrag()),this._bDragging&&this.emit('drag',this._nX,this._nY,e)}}onMouseUp(e){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),!0===this._bDragging&&(this._bDragging=!1,this.emit('dragStop',e,this._nOriginalX+this._nX)))}_startDrag(){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(e){return e=Object(i.e)(e),{x:e.pageX,y:e.pageY}}}t.a=a},function(e,t,n){var o=n(9);e.exports=function(e){if(!o(e))throw TypeError(e+' is not an object!');return e}},function(e){e.exports=function(e){return'object'==typeof e?null!==e:'function'==typeof e}},function(e){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){'use strict';var o=n(0);t.a=class{constructor(){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'],36<this._keys.length)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']}minifyConfig(e){var t={};return this._nextLevel(e,t,'_min'),t}unminifyConfig(e){var t={};return this._nextLevel(e,t,'_max'),t}_nextLevel(e,t,n){var o,i;for(o in e)e instanceof Array&&(o=parseInt(o,10)),e.hasOwnProperty(o)&&(i=this[n](o,this._keys),'object'==typeof e[o]?(t[i]=e[o]instanceof Array?[]:{},this._nextLevel(e[o],t[i],n)):t[i]=this[n](e[o],this._values))}_min(e,t){if('string'==typeof e&&1===e.length)return'___'+e;var n=Object(o.g)(e,t);return-1===n?e:n.toString(36)}_max(e,t){return'string'==typeof e&&1===e.length?t[parseInt(e,36)]:'string'==typeof e&&'___'===e.substr(0,3)?e[3]:e}}},function(e,t,n){'use strict';var o=n(3),i=n(6);class a extends o.a{constructor(e,t,n){super(e,t,null),this.isRoot=!0,this.type='root',this.element=$('<div class=\"lm_goldenlayout lm_item lm_root\"></div>'),this.childElementContainer=this.element,this._containerElement=n,this._containerElement.append(this.element)}addChild(e){if(0<this.contentItems.length)throw new Error('Root node can only have a single child');e=this.layoutManager._$normalizeContentItem(e,this),this.childElementContainer.append(e.element),o.a.prototype.addChild.call(this,e),this.callDownwards('setSize'),this.emitBubblingEvent('stateChanged')}setSize(e,t){e='undefined'==typeof e?this._containerElement.width():e,t='undefined'==typeof t?this._containerElement.height():t,this.element.width(e),this.element.height(t),this.contentItems[0]&&(this.contentItems[0].element.width(e),this.contentItems[0].element.height(t))}_$highlightDropZone(){this.layoutManager.tabDropPlaceholder.remove(),o.a.prototype._$highlightDropZone.apply(this,arguments)}_$onDrop(e,t){var n;if(e.isComponent&&(n=this.layoutManager.createContentItem({type:'stack',header:e.config.header||{}},this),n._$init(),n.addChild(e),e=n),!this.contentItems.length)this.addChild(e);else{('row'===e.config.type||'column'===e.config.type)&&(n=this.layoutManager.createContentItem({type:'stack'},this),n.addChild(e),e=n);var o='x'==t.side[0]?'row':'column',a='x'==t.side[0]?'width':'height',s='2'==t.side[1],r=this.contentItems[0];if(!(r instanceof i.a)||r.type!=o){var l=this.layoutManager.createContentItem({type:o},this);this.replaceChild(r,l),l.addChild(e,s?0:void 0,!0),l.addChild(r,s?void 0:0,!0),r.config[a]=50,e.config[a]=50,l.callDownwards('setSize')}else{var c=r.contentItems[s?0:r.contentItems.length-1];r.addChild(e,s?0:void 0,!0),c.config[a]*=0.5,e.config[a]=c.config[a],r.callDownwards('setSize')}}}}t.a=a},function(t,o,i){'use strict';var a=i(3),s=i(6),r=i(28),l=i(0);class c extends a.a{constructor(e,t,n){super(e,t,n),this.element=$('<div class=\"lm_item lm_stack\"></div>'),this._activeContentItem=null;var o=e.config;this._header={show:!0===o.settings.hasHeaders&&!1!==t.hasHeaders,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&&Object(l.b)(this._header,o.header),t.header&&Object(l.b)(this._header,t.header),t.content&&t.content[0]&&t.content[0].header&&Object(l.b)(this._header,t.content[0].header),this._dropZones={},this._dropSegment=null,this._contentAreaDimensions=null,this._dropIndex=null,this.isStack=!0,this.childElementContainer=$('<div class=\"lm_items\"></div>'),this.header=new r.a(e,this),this.element.on('mouseleave mouseenter',Object(l.c)(function(e){this._docker&&this._docker.docked&&this.childElementContainer[this._docker.dimension]('mouseenter'==e.type?this._docker.realSize:0)},this)),this.element.append(this.header.element),this.element.append(this.childElementContainer),this._setupHeaderPosition(),this._$validateClosability()}dock(e){this._header.dock&&this.parent instanceof s.a&&this.parent.dock(this,e)}setSize(){if('none'!==this.element.css('display')){var e=this._docker&&this._docker.docked,t={width:this.element.width(),height:this.element.height()};this._header.show&&(t[this._sided?'width':'height']-=this.layoutManager.config.dimensions.headerHeight),e&&(t[this._docker.dimension]=this._docker.realSize),e&&'height'!=this._docker.dimension||this.childElementContainer.width(t.width),e&&'width'!=this._docker.dimension||this.childElementContainer.height(t.height);for(var n=0;n<this.contentItems.length;n++)this.contentItems[n].element.width(t.width),this.contentItems[n].element.height(t.height);this.emit('resize'),this.emitBubblingEvent('stateChanged')}}_$init(){var e,t;if(!0!==this.isInitialised){for(a.a.prototype._$init.call(this),e=0;e<this.contentItems.length;e++)this.header.createTab(this.contentItems[e]),this.contentItems[e]._$hide();if(0<this.contentItems.length){if(t=this.contentItems[this.config.activeItemIndex||0],!t)throw new Error('Configured activeItemIndex out of bounds');this.setActiveContentItem(t)}}}setActiveContentItem(e){if(-1===Object(l.g)(e,this.contentItems))throw new Error('contentItem is not a child of this stack');null!==this._activeContentItem&&this._activeContentItem._$hide(),this._activeContentItem=e,this.header.setActiveContentItem(e),e._$show(),this.emit('activeContentItemChanged',e),this.layoutManager.emit('activeContentItemChanged',e),this.emitBubblingEvent('stateChanged')}getActiveContentItem(){return this.header.activeContentItem}addChild(e,t){t>this.contentItems.length&&(t-=1),e=this.layoutManager._$normalizeContentItem(e,this),a.a.prototype.addChild.call(this,e,t),this.childElementContainer.append(e.element),this.header.createTab(e,t),this.setActiveContentItem(e),this.callDownwards('setSize'),this._$validateClosability(),this.parent instanceof s.a&&this.parent._validateDocking(),this.emitBubblingEvent('stateChanged')}removeChild(e,t){var o=Object(l.g)(e,this.contentItems);a.a.prototype.removeChild.call(this,e,t),this.header.removeTab(e),this.header.activeContentItem===e&&(0<this.contentItems.length?this.setActiveContentItem(this.contentItems[n(o-1,0)]):this._activeContentItem=null),this._$validateClosability(),this.parent instanceof s.a&&this.parent._validateDocking(),this.emitBubblingEvent('stateChanged')}undisplayChild(e){if(1<this.contentItems.length){var t=Object(l.g)(e,this.contentItems);e._$hide&&e._$hide(),this.setActiveContentItem(this.contentItems[0===t?t+1:t-1])}else this.header.hideTab(e),e._$hide&&e._$hide(),a.a.prototype.undisplayChild.call(this,e),this.parent instanceof s.a&&this.parent._validateDocking();this.emitBubblingEvent('stateChanged')}_$validateClosability(){var e,t,n;for(e=this.header._isClosable(),n=0,t=this.contentItems.length;n<t&&!!e;n++)e=this.contentItems[n].config.isClosable;this.header._$setClosable(e)}_$destroy(){a.a.prototype._$destroy.call(this),this.header._$destroy(),this.element.off('mouseenter mouseleave')}_$onDrop(e){if('header'===this._dropSegment)return this._resetHeaderDropZone(),void this.addChild(e,this._dropIndex);if('body'===this._dropSegment)return void this.addChild(e);var t,n,o,i='top'===this._dropSegment||'bottom'===this._dropSegment,a='left'===this._dropSegment||'right'===this._dropSegment,s='top'===this._dropSegment||'left'===this._dropSegment,r=i&&this.parent.isColumn||a&&this.parent.isRow,c=i?'column':'row',p=i?'height':'width';e.isComponent&&(n=this.layoutManager.createContentItem({type:'stack',header:e.config.header||{}},this),n._$init(),n.addChild(e),e=n),('row'===e.config.type||'column'===e.config.type)&&(n=this.layoutManager.createContentItem({type:'stack'},this),n.addChild(e),e=n),r?(t=Object(l.g)(this,this.parent.contentItems),this.parent.addChild(e,s?t:t+1,!0),this.config[p]*=0.5,e.config[p]=this.config[p],this.parent.callDownwards('setSize')):(c=i?'column':'row',o=this.layoutManager.createContentItem({type:c},this),this.parent.replaceChild(this,o),o.addChild(e,s?0:void 0,!0),o.addChild(this,s?void 0:0,!0),this.config[p]=50,e.config[p]=50,o.callDownwards('setSize')),this.parent._validateDocking()}_$highlightDropZone(e,t){var n,o;for(n in this._contentAreaDimensions)if(o=this._contentAreaDimensions[n].hoverArea,o.x1<e&&o.x2>e&&o.y1<t&&o.y2>t)return void('header'===n?(this._dropSegment='header',this._highlightHeaderDropZone(this._sided?t:e)):(this._resetHeaderDropZone(),this._highlightBodyDropZone(n)))}_$getArea(){if('none'===this.element.css('display'))return null;var e=a.a.prototype._$getArea,t=e.call(this,this.header.element),n=e.call(this,this.childElementContainer),o=n.x2-n.x1,i=n.y2-n.y1;return(this._contentAreaDimensions={header:{hoverArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2},highlightArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}}},this._activeContentItem&&!1===this._activeContentItem.isComponent)?t: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}},e.call(this,this.element)):(this._contentAreaDimensions.left={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x1+0.25*o,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x1+0.5*o,y2:n.y2}},this._contentAreaDimensions.top={hoverArea:{x1:n.x1+0.25*o,y1:n.y1,x2:n.x1+0.75*o,y2:n.y1+0.5*i},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y1+0.5*i}},this._contentAreaDimensions.right={hoverArea:{x1:n.x1+0.75*o,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1+0.5*o,y1:n.y1,x2:n.x2,y2:n.y2}},this._contentAreaDimensions.bottom={hoverArea:{x1:n.x1+0.25*o,y1:n.y1+0.5*i,x2:n.x1+0.75*o,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1+0.5*i,x2:n.x2,y2:n.y2}},e.call(this,this.element))}_highlightHeaderDropZone(t){var n,o,i,a,s,r,l,c,p,d=this.header.tabs.length,m=!1;if(0===d)return l=this.header.element.offset(),void this.layoutManager.dropTargetIndicator.highlightArea({x1:l.left,x2:l.left+100,y1:l.top+this.header.element.height()-20,y2:l.top+this.header.element.height()});for(n=0;n<d;n++)if(o=this.header.tabs[n].element,s=o.offset(),this._sided?(a=s.top,i=s.left,c=o.height()):(a=s.left,i=s.top,c=o.width()),t>a&&t<a+c){m=!0;break}if(!(!1==m&&t<a)){if(p=a+c/2,t<p?(this._dropIndex=n,o.before(this.layoutManager.tabDropPlaceholder)):(this._dropIndex=e(n+1,d),o.after(this.layoutManager.tabDropPlaceholder)),this._sided){var _=this.layoutManager.tabDropPlaceholder.offset().top;return void this.layoutManager.dropTargetIndicator.highlightArea({x1:i,x2:i+o.innerHeight(),y1:_,y2:_+this.layoutManager.tabDropPlaceholder.width()})}r=this.layoutManager.tabDropPlaceholder.offset().left,this.layoutManager.dropTargetIndicator.highlightArea({x1:r,x2:r+this.layoutManager.tabDropPlaceholder.width(),y1:i,y2:i+o.innerHeight()})}}_resetHeaderDropZone(){this.layoutManager.tabDropPlaceholder.remove()}toggleMaximise(t){this.isMaximised||this.dock(!1),a.a.prototype.toggleMaximise.call(this,t)}_setupHeaderPosition(){var e=0<=['right','left','bottom'].indexOf(this._header.show)&&this._header.show;if(this.header.element.toggle(!!this._header.show),this._side=e,this._sided=0<=['right','left'].indexOf(this._side),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 t=0<=['right','bottom'].indexOf(this._side)?'before':'after';this.header.element[t](this.childElementContainer),this.callDownwards('setSize')}}_highlightBodyDropZone(e){var t=this._contentAreaDimensions[e].highlightArea;this.layoutManager.dropTargetIndicator.highlightArea(t),this._dropSegment=e}}o.a=c},function(e){e.exports=function(e){if(e==void 0)throw TypeError('Can\\'t call method on '+e);return e}},function(e,t,n){var o=n(44),i=n(20);e.exports=Object.keys||function(e){return o(e,i)}},function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,t,n){var o=n(45),i=n(14);e.exports=function(e){return o(i(e))}},function(e){var n=Math.ceil;e.exports=function(e){return isNaN(e=+e)?0:(0<e?t:n)(e)}},function(e,t,n){var o=n(50)('keys'),i=n(52);e.exports=function(e){return o[e]||(o[e]=i(e))}},function(e){e.exports=['constructor','hasOwnProperty','isPrototypeOf','propertyIsEnumerable','toLocaleString','toString','valueOf']},function(e,t,n){var o=n(4),i=n(2),a=n(54),s=n(56),r=n(16),l='prototype',c=function(e,t,n){var p,d,m,_=e&c.F,g=e&c.G,u=e&c.S,f=e&c.P,h=e&c.B,y=e&c.W,v=g?i:i[t]||(i[t]={}),b=v[l],k=g?o:u?o[t]:(o[t]||{})[l];for(p in g&&(n=t),n)d=!_&&k&&void 0!==k[p],d&&r(v,p)||(m=d?k[p]:n[p],v[p]=g&&'function'!=typeof k[p]?n[p]:h&&d?a(m,o):y&&k[p]==m?function(e){var t=function(t,n,o){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n);}return new e(t,n,o)}return e.apply(this,arguments)};return t[l]=e[l],t}(m):f&&'function'==typeof m?a(Function.call,m):m,f&&((v.virtual||(v.virtual={}))[p]=m,e&c.R&&b&&!b[p]&&s(b,p,m)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var o=n(8),i=n(57),a=n(58),s=Object.defineProperty;t.f=n(5)?Object.defineProperty:function(e,t,n){if(o(e),t=a(t,!0),o(n),i)try{return s(e,t,n)}catch(t){}if('get'in n||'set'in n)throw TypeError('Accessors not supported!');return'value'in n&&(e[t]=n.value),e}},function(e,t,n){var o=n(9),i=n(4).document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t){'use strict';t.a=class{constructor(e,t){this._reactComponent=null,this._originalComponentWillUpdate=null,this._container=e,this._initialState=t,this._reactClass=this._getReactClass(),this._container.on('open',this._render,this),this._container.on('destroy',this._destroy,this)}_render(){this._reactComponent=ReactDOM.render(this._getReactComponent(),this._container.getElement()[0]),this._originalComponentWillUpdate=this._reactComponent.componentWillUpdate||function(){},this._reactComponent.componentWillUpdate=this._onUpdate.bind(this),this._container.getState()&&this._reactComponent.setState(this._container.getState())}_destroy(){ReactDOM.unmountComponentAtNode(this._container.getElement()[0]),this._container.off('open',this._render,this),this._container.off('destroy',this._destroy,this)}_onUpdate(e,t){this._container.setState(t),this._originalComponentWillUpdate.call(this._reactComponent,e,t)}_getReactClass(){var e,t=this._container._config.component;if(!t)throw new Error('No react component name. type: react-component needs a field `component`');if(e=this._container.layoutManager.getComponent(t),!e)throw new Error('React component \"'+t+'\" not found. Please register all components with GoldenLayout using `registerComponent(name, component)`');return e}_getReactComponent(){var e={glEventHub:this._container.layoutManager.eventHub,glContainer:this._container},t=$.extend(e,this._container._config.props);return React.createElement(this._reactClass,t)}}},function(e,t,n){'use strict';var o=n(1),i=n(0);class a extends o.b{constructor(e){super(),this._layoutManager=e,this._dontPropagateToParent=null,this._childEventSource=null,this.on(o.a,Object(i.c)(this._onEventFromThis,this)),this._boundOnEventFromChild=Object(i.c)(this._onEventFromChild,this),$(window).on('gl_child_event',this._boundOnEventFromChild)}_onEventFromThis(){var e=Array.prototype.slice.call(arguments);this._layoutManager.isSubWindow&&e[0]!==this._dontPropagateToParent&&this._propagateToParent(e),this._propagateToChildren(e),this._dontPropagateToParent=null,this._childEventSource=null}_$onEventFromParent(e){this._dontPropagateToParent=e[0],this.emit.apply(this,e)}_onEventFromChild(e){this._childEventSource=e.originalEvent.__gl,this.emit.apply(this,e.originalEvent.__glArgs)}_propagateToParent(e){var t,n='gl_child_event';document.createEvent?(t=window.opener.document.createEvent('HTMLEvents'),t.initEvent(n,!0,!0)):(t=window.opener.document.createEventObject(),t.eventType=n),t.eventName=n,t.__glArgs=e,t.__gl=this._layoutManager,document.createEvent?window.opener.dispatchEvent(t):window.opener.fireEvent('on'+t.eventType,t)}_propagateToChildren(e){var t,n;for(n=0;n<this._layoutManager.openPopouts.length;n++)t=this._layoutManager.openPopouts[n].getGlInstance(),t&&t!==this._childEventSource&&t.eventHub._$onEventFromParent(e)}destroy(){$(window).off('gl_child_event',this._boundOnEventFromChild)}}t.a=a},function(e,t){'use strict';t.a=class{constructor(e,t){this.name=e,this.origin=t,this.isPropagationStopped=!1}stopPropagation(){this.isPropagationStopped=!0}}},function(e,t){'use strict';class n extends Error{constructor(e,t){super(),this.name='Configuration Error',this.message=e,this.node=t}}t.a=n},function(e,t,n){'use strict';var o=n(1),a=n(29),i=n(31),s=n(0);class r extends o.b{constructor(e,t){super(),this.layoutManager=e,this.element=$('<div class=\"lm_header\"><ul class=\"lm_tabs\"></ul><ul class=\"lm_controls\"></ul><ul class=\"lm_tabdropdown_list\"></ul></div>'),!0===this.layoutManager.config.settings.selectionEnabled&&(this.element.addClass('lm_selectable'),this.element.on('click touchstart',Object(s.c)(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=t,this.parent.on('resize',this._updateTabSizes,this),this.tabs=[],this.tabsMarkedForRemoval=[],this.activeContentItem=null,this.closeButton=null,this.dockButton=null,this.tabDropdownButton=null,this.hideAdditionalTabsDropdown=Object(s.c)(this._hideAdditionalTabsDropdown,this),$(document).mouseup(this.hideAdditionalTabsDropdown),this._lastVisibleTabIndex=-1,this._tabControlOffset=this.layoutManager.config.settings.tabControlOffset,this._createControls()}createTab(e,t){var n,o;for(o=0;o<this.tabs.length;o++)if(this.tabs[o].contentItem===e)return;return n=new a.a(this,e),0===this.tabs.length?(this.tabs.push(n),void this.tabsContainer.append(n.element)):void(void 0===t&&(t=this.tabs.length),0<t?this.tabs[t-1].element.after(n.element):this.tabs[0].element.before(n.element),this.tabs.splice(t,0,n),this._updateTabSizes())}removeTab(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t]._$destroy(),void this.tabs.splice(t,1);for(t=0;t<this.tabsMarkedForRemoval.length;t++)if(this.tabsMarkedForRemoval[t].contentItem===e)return this.tabsMarkedForRemoval[t]._$destroy(),void this.tabsMarkedForRemoval.splice(t,1);throw new Error('contentItem is not controlled by this header')}hideTab(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t].element.hide(),this.tabsMarkedForRemoval.push(this.tabs[t]),void this.tabs.splice(t,1);throw new Error('contentItem is not controlled by this header')}setActiveContentItem(e){var t,n,o,i;for(t=0;t<this.tabs.length;t++)o=this.tabs[t].contentItem===e,this.tabs[t].setActive(o),!0===o&&(this.activeContentItem=e,this.parent.config.activeItemIndex=t);if(this.layoutManager.config.settings.reorderOnTabMenuClick&&-1!==this._lastVisibleTabIndex&&this.parent.config.activeItemIndex>this._lastVisibleTabIndex){for(i=this.tabs[this.parent.config.activeItemIndex],n=this.parent.config.activeItemIndex;0<n;n--)this.tabs[n]=this.tabs[n-1];this.tabs[0]=i,this.parent.config.activeItemIndex=0}this._updateTabSizes(),this.parent.emitBubblingEvent('stateChanged')}position(e){var t=this.parent._header.show;if(this.parent._docker&&this.parent._docker.docked)throw new Error('Can\\'t change header position in docked stack');return t&&!this.parent._side&&(t='top'),void 0!==e&&this.parent._header.show!=e&&(this.parent._header.show=e,this.parent._setupHeaderPosition()),t}_$setClosable(e){return this._canDestroy=e||1<this.tabs.length,this.closeButton&&this._isClosable()&&(this.closeButton.element[e?'show':'hide'](),!0)}_setDockable(e){return this.dockButton&&this.parent._header&&this.parent._header.dock&&(this.dockButton.element.toggle(!!e),!0)}_$destroy(){this.emit('destroy',this);for(var e=0;e<this.tabs.length;e++)this.tabs[e]._$destroy();$(document).off('mouseup',this.hideAdditionalTabsDropdown),this.element.remove()}_getHeaderSetting(e){if(e in this.parent._header)return this.parent._header[e]}_createControls(){var e,t,n,o,a,r,l,c,p;if(p=Object(s.c)(this._showAdditionalTabsDropdown,this),c=this.layoutManager.config.labels.tabDropdown,this.tabDropdownButton=new i.a(this,c,'lm_tabdropdown',p),this.tabDropdownButton.element.hide(),this.parent._header&&this.parent._header.dock){var d=Object(s.c)(this.parent.dock,this.parent);n=this._getHeaderSetting('dock'),this.dockButton=new i.a(this,n,'lm_dock',d)}this._getHeaderSetting('popout')&&(t=Object(s.c)(this._onPopoutClick,this),n=this._getHeaderSetting('popout'),new i.a(this,n,'lm_popout',t)),this._getHeaderSetting('maximise')&&(r=Object(s.c)(this.parent.toggleMaximise,this.parent),o=this._getHeaderSetting('maximise'),a=this._getHeaderSetting('minimise'),l=new i.a(this,o,'lm_maximise',r),this.parent.on('maximised',function(){l.element.attr('title',a)}),this.parent.on('minimised',function(){l.element.attr('title',o)})),this._isClosable()&&(e=Object(s.c)(this.parent.remove,this.parent),n=this._getHeaderSetting('close'),this.closeButton=new i.a(this,n,'lm_close',e))}_showAdditionalTabsDropdown(){this.tabDropdownContainer.show()}_hideAdditionalTabsDropdown(){this.tabDropdownContainer.hide()}_isClosable(){return this.parent.config.isClosable&&this.layoutManager.config.settings.showCloseIcon}_onPopoutClick(){!0===this.layoutManager.config.settings.popoutWholeStack?this.parent.popout():this.activeContentItem.popout()}_onHeaderClick(e){e.target===this.element[0]&&this.parent.select()}_updateTabSizes(e){if(0!==this.tabs.length){this.tabDropdownButton.element.toggle(!0===e);var t=function(e){return e?'width':'height'};this.element.css(t(!this.parent._sided),''),this.element[t(this.parent._sided)](this.layoutManager.config.dimensions.headerHeight);var n,o,i,a,s,r=this.element.outerWidth()-this.controlsContainer.outerWidth()-this._tabControlOffset,l=0,c=0,p=0,d=this.layoutManager.config.settings.tabOverlapAllowance,m=!1,_=this.activeContentItem?this.tabs.indexOf(this.activeContentItem.tab):0,g=this.tabs[_];for(this.parent._sided&&(r=this.element.outerHeight()-this.controlsContainer.outerHeight()-this._tabControlOffset),this._lastVisibleTabIndex=-1,o=0;o<this.tabs.length;o++)if(n=this.tabs[o].element,this.tabsContainer.append(n),s=n.outerWidth()+parseInt(n.css('margin-right'),10),l+=s,c=_<=o?l:l+g.element.outerWidth()+parseInt(g.element.css('margin-right'),10),c>r){if(!!m)o===_&&(n.css({\"z-index\":'auto',\"margin-left\":''}),this.tabsContainer.append(n));else if(p=0<_&&_<=o?(c-r)/(o-1):(c-r)/o,p<d){for(i=0;i<=o;i++)a=i!==_&&0!==i?'-'+p+'px':'',this.tabs[i].element.css({\"z-index\":o-i,\"margin-left\":a});this._lastVisibleTabIndex=o,this.tabsContainer.append(n)}else m=!0;if(m&&o!==_)if(e)n.css({\"z-index\":'auto',\"margin-left\":''}),this.tabDropdownContainer.append(n);else return void this._updateTabSizes(!0)}else this._lastVisibleTabIndex=o,n.css({\"z-index\":'auto',\"margin-left\":''}),this.tabsContainer.append(n)}}}t.a=r},function(e,t,n){'use strict';var o=n(7),i=n(30),a=n(0);t.a=class{constructor(e,t){this.header=e,this.contentItem=t,this.element=$('<li class=\"lm_tab\"><i class=\"lm_left\"></i><span class=\"lm_title\"></span><div class=\"lm_close_tab\"></div><i class=\"lm_right\"></i></li>'),this.titleElement=this.element.find('.lm_title'),this.closeElement=this.element.find('.lm_close_tab'),this.closeElement[t.config.isClosable?'show':'hide'](),this.isActive=!1,this.setTitle(t.config.title),this.contentItem.on('titleChanged',this.setTitle,this),this._layoutManager=this.contentItem.layoutManager,!0===this._layoutManager.config.settings.reorderEnabled&&!0===t.config.reorderEnabled&&(this._dragListener=new o.a(this.element),this._dragListener.on('dragStart',this._onDragStart,this),this.contentItem.on('destroy',this._dragListener.destroy,this._dragListener)),this._onTabClickFn=Object(a.c)(this._onTabClick,this),this._onCloseClickFn=Object(a.c)(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))}setTitle(e){this.element.attr('title',Object(a.k)(e)),this.titleElement.html(e)}setActive(e){e===this.isActive||(this.isActive=e,e?this.element.addClass('lm_active'):this.element.removeClass('lm_active'))}_$destroy(){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(e,t){return this.header._canDestroy?void(!0===this.contentItem.parent.isMaximised&&this.contentItem.parent.toggleMaximise(),new i.a(e,t,this._dragListener,this._layoutManager,this.contentItem,this.header.parent)):null}_onTabClick(e){if(0===e.button||'touchstart'===e.type){var t=this.header.parent.getActiveContentItem();this.contentItem!==t&&this.header.parent.setActiveContentItem(this.contentItem)}else 1===e.button&&this.contentItem.config.isClosable&&this._onCloseClick(e)}_onCloseClick(e){e.stopPropagation();this.header._canDestroy&&this.header.parent.removeChild(this.contentItem)}_onCloseMousedown(e){e.stopPropagation()}}},function(e,t,n){'use strict';var o=n(1),i=n(0);class a extends o.b{constructor(e,t,n,o,a,s){super(),this._dragListener=n,this._layoutManager=o,this._contentItem=a,this._originalParent=s,this._area=null,this._lastValidArea=null,this._dragListener.on('drag',this._onDrag,this),this._dragListener.on('dragStop',this._onDrop,this),this.element=$('<div class=\"lm_dragProxy\"><div class=\"lm_header\"><ul class=\"lm_tabs\"><li class=\"lm_tab lm_active\"><i class=\"lm_left\"></i><span class=\"lm_title\"></span><i class=\"lm_right\"></i></li></ul></div><div class=\"lm_content\"></div></div>'),s&&s._side&&(this._sided=s._sided,this.element.addClass('lm_'+s._side),0<=['right','bottom'].indexOf(s._side)&&this.element.find('.lm_content').after(this.element.find('.lm_header'))),this.element.css({left:e,top:t}),this.element.find('.lm_tab').attr('title',Object(i.k)(this._contentItem.config.title)),this.element.find('.lm_title').html(this._contentItem.config.title),this.childElementContainer=this.element.find('.lm_content'),this.childElementContainer.append(a.element),this._undisplayTree(),this._layoutManager._$calculateItemAreas(),this._setDimensions(),$(document.body).append(this.element);var r=this._layoutManager.container.offset();this._minX=r.left,this._minY=r.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(e,t)}_onDrag(e,t,n){n=Object(i.e)(n);var o=n.pageX,a=n.pageY,s=o>this._minX&&o<this._maxX&&a>this._minY&&a<this._maxY;(s||!0!==this._layoutManager.config.settings.constrainDragToContainer)&&this._setDropPosition(o,a)}_setDropPosition(e,t){this.element.css({left:e,top:t}),this._area=this._layoutManager._$getArea(e,t),null!==this._area&&(this._lastValidArea=this._area,this._area.contentItem._$highlightDropZone(e,t,this._area))}_onDrop(){this._updateTree(),this._layoutManager.dropTargetIndicator.hide(),null===this._area?null===this._lastValidArea?this._originalParent?this._originalParent.addChild(this._contentItem):this._contentItem._$destroy():this._lastValidArea.contentItem._$onDrop(this._contentItem,this._lastValidArea):this._area.contentItem._$onDrop(this._contentItem,this._area),this.element.remove(),this._layoutManager.emit('itemDropped',this._contentItem)}_undisplayTree(){this._contentItem.parent&&this._contentItem.parent.undisplayChild(this._contentItem)}_updateTree(){this._contentItem.parent&&this._contentItem.parent.removeChild(this._contentItem,!0),this._contentItem._$setParent(this)}_setDimensions(){var e=this._layoutManager.config.dimensions,t=e.dragProxyWidth,n=e.dragProxyHeight;this.element.width(t),this.element.height(n),t-=this._sided?e.headerHeight:0,n-=this._sided?0:e.headerHeight,this.childElementContainer.width(t),this.childElementContainer.height(n),this._contentItem.element.width(t),this._contentItem.element.height(n),this._contentItem.callDownwards('_$show'),this._contentItem.callDownwards('setSize')}}t.a=a},function(e,t){'use strict';t.a=class{constructor(e,t,n,o){this._header=e,this.element=$('<li class=\"'+n+'\" title=\"'+t+'\"></li>'),this._header.on('destroy',this._$destroy,this),this._action=o,this.element.on('click touchstart',this._action),this._header.controlsContainer.append(this.element)}_$destroy(){this.element.off(),this.element.remove()}}},function(e,t,n){'use strict';var o=n(3),i=n(33);class a extends o.a{constructor(e,t,n){super(e,t,n);var o=e.getComponent(this.config.componentName),a=$.extend(!0,{},this.config.componentState||{});a.componentName=this.config.componentName,this.componentName=this.config.componentName,''===this.config.title&&(this.config.title=this.config.componentName),this.isComponent=!0,this.container=new i.a(this.config,this,e),this.instance=new o(this.container,a),this.element=this.container._element}close(){this.parent.removeChild(this)}setSize(){'none'!==this.element.css('display')&&this.container._$setSize(this.element.width(),this.element.height())}_$init(){o.a.prototype._$init.call(this),this.container.emit('open')}_$hide(){this.container.hide(),o.a.prototype._$hide.call(this)}_$show(){this.container.show(),o.a.prototype._$show.call(this)}_$shown(){this.container.shown(),o.a.prototype._$shown.call(this)}_$destroy(){this.container.emit('destroy',this),o.a.prototype._$destroy.call(this)}_$getArea(){return null}}t.a=a},function(e,t,n){'use strict';var o=n(1);class i extends o.b{constructor(e,t,n){super(),this.width=null,this.height=null,this.title=e.componentName,this.parent=t,this.layoutManager=n,this.isHidden=!1,this._config=e,this._element=$('<div class=\"lm_item_container\"><div class=\"lm_content\"></div></div>'),this._contentElement=this._element.find('.lm_content')}getElement(){return this._contentElement}hide(){this.emit('hide'),this.isHidden=!0,this._element.hide()}show(){this.emit('show'),this.isHidden=!1,this._element.show(),(0!=this.height||0!=this.width)&&this.emit('shown')}setSize(e,t){for(var n,o,a,s,r,l,i=this.parent,c=this;!i.isColumn&&!i.isRow;)if(c=i,i=i.parent,i.isRoot)return!1;for(a=i.isColumn?'height':'width',s='height'===a?t:e,n=this[a]*(1/(c.config[a]/100)),o=100*(s/n),r=(c.config[a]-o)/(i.contentItems.length-1),l=0;l<i.contentItems.length;l++)i.contentItems[l]===c?i.contentItems[l].config[a]=o:i.contentItems[l].config[a]+=r;return i.callDownwards('setSize'),!0}close(){this._config.isClosable&&(this.emit('close'),this.parent.close())}getState(){return this._config.componentState}extendState(e){this.setState($.extend(!0,this.getState(),e))}setState(e){this._config.componentState=e,this.parent.emitBubblingEvent('stateChanged')}setTitle(e){this.parent.setTitle(e)}_$setSize(e,t){(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,$.zepto?this._contentElement.width(e):this._contentElement.outerWidth(e),$.zepto?this._contentElement.height(t):this._contentElement.outerHeight(t),this.emit('resize'))}}t.a=i},function(e,n,o){'use strict';var i=o(68),a=o.n(i),s=o(1),r=o(11),l=o(0);class c extends s.b{constructor(e,t,n,o,i){super(),this.isInitialised=!1,this._config=e,this._dimensions=t,this._parentId=n,this._indexInParent=o,this._layoutManager=i,this._popoutWindow=null,this._id=null,this._createWindow()}toConfig(){if(!1===this.isInitialised)throw new Error('Can\\'t create config, layout not yet initialised');return{dimensions:{width:this.getGlInstance().width,height:this.getGlInstance().height,left:this._popoutWindow.screenX||this._popoutWindow.screenLeft,top:this._popoutWindow.screenY||this._popoutWindow.screenTop},content:this.getGlInstance().toConfig().content,parentId:this._parentId,indexInParent:this._indexInParent}}getGlInstance(){return this._popoutWindow.__glInstance}getWindow(){return this._popoutWindow}close(){if(this.getGlInstance())this.getGlInstance()._$closeWindow();else try{this.getWindow().close()}catch(t){}}popIn(){var e,t,n=this._indexInParent;this._parentId&&(e=$.extend(!0,{},this.getGlInstance().toConfig()).content[0],t=this._layoutManager.root.getItemsById(this._parentId)[0],!t&&(t=0<this._layoutManager.root.contentItems.length?this._layoutManager.root.contentItems[0]:this._layoutManager.root,n=0)),t.addChild(e,this._indexInParent),this.close()}_createWindow(){var e,n=this._createUrl(),o=t(1e6*Math.random()).toString(36),i=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,o,i),!this._popoutWindow)if(!0===this._layoutManager.config.settings.blockedPopoutsThrowError){var a=new Error('Popout blocked');throw a.type='popoutBlocked',a}else return;$(this._popoutWindow).on('load',Object(l.c)(this._positionWindow,this)).on('unload beforeunload',Object(l.c)(this._onClose,this)),e=setInterval(Object(l.c)(function(){this._popoutWindow.__glInstance&&this._popoutWindow.__glInstance.isInitialised&&(this._onInitialised(),clearInterval(e))},this),10)}_serializeWindowOptions(e){var t,n=[];for(t in e)n.push(t+'='+e[t]);return n.join(',')}_createUrl(){var e,t={content:this._config},n='gl-window-config-'+Object(l.f)();t=new r.a().minifyConfig(t);try{localStorage.setItem(n,a()(t))}catch(t){throw new Error('Error while writing to localStorage '+t.toString())}return e=document.location.href.split('?'),1===e.length?e[0]+'?gl-window='+n:document.location.href+'&gl-window='+n}_positionWindow(){this._popoutWindow.moveTo(this._dimensions.left,this._dimensions.top),this._popoutWindow.focus()}_onInitialised(){this.isInitialised=!0,this.getGlInstance().on('popIn',this.popIn,this),this.emit('initialised')}_onClose(){setTimeout(Object(l.c)(this.emit,this,['closed']),50)}}n.a=c},function(e,t,n){'use strict';Object.defineProperty(t,'__esModule',{value:!0});var o=n(36),i=n.n(o),a=n(37),s=n.n(a),r=n(38),l=n.n(r),c=n(39);n.d(t,'default',function(){return c.a});var p=n(33);n.d(t,'ItemContainer',function(){return p.a});var d=n(34);n.d(t,'BrowserPopout',function(){return d.a});var m=n(28);n.d(t,'Header',function(){return m.a});var _=n(31);n.d(t,'HeaderButton',function(){return _.a});var g=n(29);n.d(t,'Tab',function(){return g.a});var u=n(32);n.d(t,'Component',function(){return u.a});var f=n(12);n.d(t,'Root',function(){return f.a});var h=n(6);n.d(t,'RowOrColumn',function(){return h.a});var y=n(13);n.d(t,'Stack',function(){return y.a});var v=n(26);n.d(t,'BubblingEvent',function(){return v.a});var b=n(11);n.d(t,'ConfigMinifier',function(){return b.a});var k=n(7);n.d(t,'DragListener',function(){return k.a});var x=n(1);n.d(t,'EventEmitter',function(){return x.b});var D=n(25);n.d(t,'EventHub',function(){return D.a});var w=n(24);n.d(t,'ReactComponentHandler',function(){return w.a}),{}.ES6&&(n(74),n(77))},function(){},function(){},function(){},function(e,o,i){'use strict';var a=i(1),s=i(24),r=i(11),l=i(25),c=i(12),p=i(6),d=i(13),m=i(32),_=i(3),g=i(34),u=i(70),f=i(71),h=i(72),y=i(27),v=i(73),b=i(0);class k extends a.b{constructor(e,t){if(!$){var n='jQuery is missing as dependency for GoldenLayout. ';throw n+='Please either expose $ on GoldenLayout\\'s scope (e.g. window) or add \"jquery\" to ',n+='your paths when using RequireJS/AMD',new Error(n)}super(),this.isInitialised=!1,this._isFullPage=!1,this._resizeTimeoutId=null,this._components={\"lm-react-component\":s.a},this._itemAreas=[],this._resizeFunction=Object(b.c)(this._onResize,this),this._unloadFunction=Object(b.c)(this._onUnload,this),this._maximisedItem=null,this._maximisePlaceholder=$('<div class=\"lm_maximise_place\"></div>'),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 l.a(this),this.config=this._createConfig(e),this.container=t,this.dropTargetIndicator=null,this.transitionIndicator=null,this.tabDropPlaceholder=$('<div class=\"lm_drop_tab_placeholder\"></div>'),!0===this.isSubWindow&&$('body').css('visibility','hidden'),this._typeToItem={column:Object(b.c)(p.a,this,[!0]),row:Object(b.c)(p.a,this,[!1]),stack:d.a,component:m.a}}minifyConfig(e){return new r.a().minifyConfig(e)}unminifyConfig(e){return new r.a().unminifyConfig(e)}registerComponent(e,t){if('function'!=typeof t)throw new Error('Please register a constructor function');if(void 0!==this._components[e])throw new Error('Component '+e+' is already registered');this._components[e]=t}toConfig(e){var t,n,o;if(!1===this.isInitialised)throw new Error('Can\\'t create config, layout not yet initialised');if(e&&!(e instanceof _.a))throw new Error('Root must be a ContentItem');for(t={settings:Object(b.b)({},this.config.settings),dimensions:Object(b.b)({},this.config.dimensions),labels:Object(b.b)({},this.config.labels)},t.content=[],n=function(e,t){var o,a;for(o in t.config)'content'!==o&&(e[o]=t.config[o]);if(t.contentItems.length)for(e.content=[],a=0;a<t.contentItems.length;a++)e.content[a]={},n(e.content[a],t.contentItems[a])},e?n(t,{contentItems:[e]}):n(t,this.root),this._$reconcilePopoutWindows(),t.openPopouts=[],o=0;o<this.openPopouts.length;o++)t.openPopouts.push(this.openPopouts[o].toConfig());return t.maximisedItemId=this._maximisedItem?'__glMaximised':null,t}getComponent(e){if(this._components[e]===void 0)throw new y.a('Unknown component \"'+e+'\"');return this._components[e]}init(){return!1===this._subWindowsCreated&&(this._createSubWindows(),this._subWindowsCreated=!0),'loading'===document.readyState||null===document.body?void $(document).ready(Object(b.c)(this.init,this)):!0===this.isSubWindow&&!1===this._creationTimeoutPassed?(setTimeout(Object(b.c)(this.init,this),7),void(this._creationTimeoutPassed=!0)):void(!0===this.isSubWindow&&this._adjustToWindowMode(),this._setContainer(),this.dropTargetIndicator=new f.a(this.container),this.transitionIndicator=new h.a,this.updateSize(),this._create(this.config),this._bindEvents(),this.isInitialised=!0,this._adjustColumnsResponsive(),this.emit('initialised'))}updateSize(e,t){2===arguments.length?(this.width=e,this.height=t):(this.width=this.container.width(),this.height=this.container.height()),!0===this.isInitialised&&(this.root.callDownwards('setSize',[this.width,this.height]),this._maximisedItem&&(this._maximisedItem.element.width(this.container.width()),this._maximisedItem.element.height(this.container.height()),this._maximisedItem.callDownwards('setSize')),this._adjustColumnsResponsive())}destroy(){!1===this.isInitialised||(this._onUnload(),$(window).off('resize',this._resizeFunction),$(window).off('unload beforeunload',this._unloadFunction),this.root.callDownwards('_$destroy',[],!0),this.root.contentItems=[],this.tabDropPlaceholder.remove(),this.dropTargetIndicator.destroy(),this.transitionIndicator.destroy(),this.eventHub.destroy(),this._dragSources.forEach(function(e){e._dragListener.destroy(),e._element=null,e._itemConfig=null,e._dragListener=null}),this._dragSources=[])}createContentItem(e,t){var n,o;if('string'!=typeof e.type)throw new y.a('Missing parameter \\'type\\'',e);if('react-component'===e.type&&(e.type='component',e.componentName='lm-react-component'),!this._typeToItem[e.type])throw n='Unknown type \\''+e.type+'\\'. Valid types are '+Object(b.j)(this._typeToItem).join(','),new y.a(n);return'component'!==e.type||t instanceof d.a||!t||!0===this.isSubWindow&&t instanceof c.a||(e={type:'stack',width:e.width,height:e.height,content:[e]}),o=new this._typeToItem[e.type](this,e,t),o}createPopout(e,t,n,o){var i,a,s,r,l,c,p=e,d=e instanceof _.a,m=this;if(n=n||null,d){for(p=this.toConfig(e).content,n=Object(b.f)(),r=e.parent,l=e;1===r.contentItems.length&&!r.isRoot;)r=r.parent,l=l.parent;r.addId(n),isNaN(o)&&(o=Object(b.g)(l,r.contentItems))}else p instanceof Array||(p=[p]);return!t&&d&&(i=window.screenX||window.screenLeft,a=window.screenY||window.screenTop,s=e.element.offset(),t={left:i+s.left,top:a+s.top,width:e.element.width(),height:e.element.height()}),t||d||(t={left:window.screenX||window.screenLeft+20,top:window.screenY||window.screenTop+20,width:500,height:309}),d&&e.remove(),c=new g.a(p,t,n,o,this),c.on('initialised',function(){m.emit('windowOpened',c)}),c.on('closed',function(){m._$reconcilePopoutWindows()}),this.openPopouts.push(c),c}createDragSource(e,t){this.config.settings.constrainDragToContainer=!1;var n=new u.a($(e),t,this);return this._dragSources.push(n),n}selectItem(e,t){if(!0!==this.config.settings.selectionEnabled)throw new Error('Please set selectionEnabled to true to use this feature');e===this.selectedItem||(null!==this.selectedItem&&this.selectedItem.deselect(),e&&!0!==t&&e.select(),this.selectedItem=e,this.emit('selectionChanged',e))}_$maximiseItem(e){null!==this._maximisedItem&&this._$minimiseItem(this._maximisedItem),this._maximisedItem=e,this._maximisedItem.addId('__glMaximised'),e.element.addClass('lm_maximised'),e.element.after(this._maximisePlaceholder),this.root.element.prepend(e.element),e.element.width(this.container.width()),e.element.height(this.container.height()),e.callDownwards('setSize'),this._maximisedItem.emit('maximised'),this.emit('stateChanged')}_$minimiseItem(e){e.element.removeClass('lm_maximised'),e.removeId('__glMaximised'),this._maximisePlaceholder.after(e.element),this._maximisePlaceholder.remove(),e.parent.callDownwards('setSize'),this._maximisedItem=null,e.emit('minimised'),this.emit('stateChanged')}_$closeWindow(){window.setTimeout(function(){window.close()},1)}_$getArea(e,t){var n,o,i=Infinity,a=null;for(n=0;n<this._itemAreas.length;n++)o=this._itemAreas[n],e>o.x1&&e<o.x2&&t>o.y1&&t<o.y2&&i>o.surface&&(i=o.surface,a=o);return a}_$createRootItemAreas(){var e=50,t={y2:0,x2:0,y1:'y2',x1:'x2'};for(var n in t){var o=this.root._$getArea();o.side=n,o[n]=t[n]?o[t[n]]-e:e,o.surface=(o.x2-o.x1)*(o.y2-o.y1),this._itemAreas.push(o)}}_$calculateItemAreas(){var e,t,n=this._getAllContentItems();if(this._itemAreas=[],1===n.length)return void this._itemAreas.push(this.root._$getArea());for(this._$createRootItemAreas(),e=0;e<n.length;e++)if(n[e].isStack)if(t=n[e]._$getArea(),null===t)continue;else if(t instanceof Array)this._itemAreas=this._itemAreas.concat(t);else{this._itemAreas.push(t);var o={};Object(b.b)(o,t),Object(b.b)(o,t.contentItem._contentAreaDimensions.header.highlightArea),o.surface=(o.x2-o.x1)*(o.y2-o.y1),this._itemAreas.push(o)}}_$normalizeContentItem(e,t){if(!e)throw new Error('No content item defined');if(Object(b.h)(e)&&(e=e()),e instanceof _.a)return e;if($.isPlainObject(e)&&e.type){var n=this.createContentItem(e,t);return n.callDownwards('_$init'),n}throw new Error('Invalid contentItem')}_$reconcilePopoutWindows(){var e,t=[];for(e=0;e<this.openPopouts.length;e++)!1===this.openPopouts[e].getWindow().closed?t.push(this.openPopouts[e]):this.emit('windowClosed',this.openPopouts[e]);this.openPopouts.length!==t.length&&(this.emit('stateChanged'),this.openPopouts=t)}_getAllContentItems(){var e=[],t=function(n){if(e.push(n),n.contentItems instanceof Array)for(var o=0;o<n.contentItems.length;o++)t(n.contentItems[o])};return t(this.root),e}_bindEvents(){this._isFullPage&&$(window).resize(this._resizeFunction),$(window).on('unload beforeunload',this._unloadFunction)}_onResize(){clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout(Object(b.c)(this.updateSize,this),100)}_createConfig(e){var t=Object(b.d)('gl-window');t&&(this.isSubWindow=!0,e=localStorage.getItem(t),e=JSON.parse(e),e=new r.a().unminifyConfig(e),localStorage.removeItem(t)),e=$.extend(!0,{},v.a,e);var n=function(e){for(var t in e)'props'!=t&&'object'==typeof e[t]?n(e[t]):'type'==t&&'react-component'===e[t]&&(e.type='component',e.componentName='lm-react-component')};return n(e),!1===e.settings.hasHeaders&&(e.dimensions.headerHeight=0),e}_adjustToWindowMode(){var e=$('<div class=\"lm_popin\" title=\"'+this.config.labels.popin+'\"><div class=\"lm_icon\"></div><div class=\"lm_bg\"></div></div>');e.click(Object(b.c)(function(){this.emit('popIn')},this)),document.title=Object(b.k)(this.config.content[0].title),$('head').append($('body link, body style, template, .gl_keep')),this.container=$('body').html('').css('visibility','visible').append(e);document.body.offsetHeight;window.__glInstance=this}_createSubWindows(){var e,t;for(e=0;e<this.config.openPopouts.length;e++)t=this.config.openPopouts[e],this.createPopout(t.content,t.dimensions,t.parentId,t.indexInParent)}_setContainer(){var e=$(this.container||'body');if(0===e.length)throw new Error('GoldenLayout container not found');if(1<e.length)throw new Error('GoldenLayout more than one container element specified');e[0]===document.body&&(this._isFullPage=!0,$('html, body').css({height:'100%',margin:0,padding:0,overflow:'hidden'})),this.container=e}_create(e){var t;if(!(e.content instanceof Array))throw t=void 0===e.content?'Missing setting \\'content\\' on top level of configuration':'Configuration parameter \\'content\\' must be an array',new y.a(t,e);if(1<e.content.length)throw t='Top level content can\\'t contain more then one element.',new y.a(t,e);this.root=new c.a(this,{content:e.content},this.container),this.root.callDownwards('_$init'),'__glMaximised'===e.maximisedItemId&&this.root.getItemsById(e.maximisedItemId)[0].toggleMaximise()}_onUnload(){if(!0===this.config.settings.closePopoutsOnUnload)for(var e=0;e<this.openPopouts.length;e++)this.openPopouts[e].close()}_adjustColumnsResponsive(){if(!this._useResponsiveLayout()||this._updatingColumnsResponsive||!this.config.dimensions||!this.config.dimensions.minItemWidth||0===this.root.contentItems.length||!this.root.contentItems[0].isRow)return void(this._firstLoad=!1);this._firstLoad=!1;var e=this.root.contentItems[0].contentItems.length;if(!(1>=e)){var o=this.config.dimensions.minItemWidth;if(!(e*o<=this.width)){this._updatingColumnsResponsive=!0;for(var a,s=n(t(this.width/o),1),r=this.root.contentItems[0],l=this._findAllStackContainers()[0],c=0;c<e-s;c++)a=r.contentItems[r.contentItems.length-1],this._addChildContentItemsToContainer(l,a);this._updatingColumnsResponsive=!1}}}_useResponsiveLayout(){return this.config.settings&&('always'==this.config.settings.responsiveMode||'onload'==this.config.settings.responsiveMode&&this._firstLoad)}_addChildContentItemsToContainer(e,t){'stack'===t.type?t.contentItems.forEach(function(n){e.addChild(n),t.removeChild(n,!0)}):t.contentItems.forEach(Object(b.c)(function(t){this._addChildContentItemsToContainer(e,t)},this))}_findAllStackContainers(){var e=[];return this._findAllStackContainersRecursive(e,this.root),e}_findAllStackContainersRecursive(e,t){t.contentItems.forEach(Object(b.c)(function(t){'stack'==t.type?e.push(t):!t.isComponent&&this._findAllStackContainersRecursive(e,t)},this))}}o.a=k},function(e,t,n){e.exports={default:n(41),__esModule:!0}},function(e,t,n){n(42),e.exports=n(2).Object.keys},function(e,t,n){var o=n(43),i=n(15);n(53)('keys',function(){return function(e){return i(o(e))}})},function(e,t,n){var o=n(14);e.exports=function(e){return Object(o(e))}},function(e,t,n){var o=n(16),a=n(17),s=n(47)(!1),i=n(19)('IE_PROTO');e.exports=function(e,t){var n,r=a(e),l=0,c=[];for(n in r)n!=i&&o(r,n)&&c.push(n);for(;t.length>l;)o(r,n=t[l++])&&(~s(c,n)||c.push(n));return c}},function(e,t,n){var o=n(46);e.exports=Object('z').propertyIsEnumerable(0)?Object:function(e){return'String'==o(e)?e.split(''):Object(e)}},function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,t,n){var o=n(17),i=n(48),a=n(49);e.exports=function(e){return function(t,n,s){var r,l=o(t),c=i(l.length),p=a(s,c);if(e&&n!=n){for(;c>p;)if(r=l[p++],r!=r)return!0;}else for(;c>p;p++)if((e||p in l)&&l[p]===n)return e||p||0;return!e&&-1}}},function(t,n,o){var i=o(18);t.exports=function(t){return 0<t?e(i(t),9007199254740991):0}},function(t,o,i){var a=i(18);t.exports=function(t,o){return t=a(t),0>t?n(t+o,0):e(t,o)}},function(e,t,n){var o=n(2),i=n(4),a='__core-js_shared__',s=i[a]||(i[a]={});(e.exports=function(e,t){return s[e]||(s[e]=t===void 0?{}:t)})('versions',[]).push({version:o.version,mode:n(51)?'pure':'global',copyright:'\\xA9 2018 Denis Pushkarev (zloirock.ru)'})},function(e){e.exports=!0},function(e){var t=0,n=Math.random();e.exports=function(e){return'Symbol('.concat(e===void 0?'':e,')_',(++t+n).toString(36))}},function(e,t,n){var o=n(21),i=n(2),a=n(10);e.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],s={};s[e]=t(n),o(o.S+o.F*a(function(){n(1)}),'Object',s)}},function(e,t,n){var o=n(55);e.exports=function(e,t,n){return(o(e),void 0===t)?e:1===n?function(n){return e.call(t,n)}:2===n?function(n,o){return e.call(t,n,o)}:3===n?function(n,o,i){return e.call(t,n,o,i)}:function(){return e.apply(t,arguments)}}},function(e){e.exports=function(e){if('function'!=typeof e)throw TypeError(e+' is not a function!');return e}},function(e,t,n){var o=n(22),i=n(59);e.exports=n(5)?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){e.exports=!n(5)&&!n(10)(function(){return 7!=Object.defineProperty(n(23)('div'),'a',{get:function(){return 7}}).a})},function(e,t,n){var o=n(9);e.exports=function(e,t){if(!o(e))return e;var n,i;if(t&&'function'==typeof(n=e.toString)&&!o(i=n.call(e)))return i;if('function'==typeof(n=e.valueOf)&&!o(i=n.call(e)))return i;if(!t&&'function'==typeof(n=e.toString)&&!o(i=n.call(e)))return i;throw TypeError('Can\\'t convert object to primitive value')}},function(e){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports={default:n(61),__esModule:!0}},function(e,t,n){n(62);var o=n(2).Object;e.exports=function(e,t){return o.create(e,t)}},function(e,t,n){var o=n(21);o(o.S,'Object',{create:n(63)})},function(e,t,n){var o=n(8),i=n(64),a=n(20),s=n(19)('IE_PROTO'),r=function(){},l='prototype',c=function(){var e,t=n(23)('iframe'),o=a.length,i='<',s='>';for(t.style.display='none',n(65).appendChild(t),t.src='javascript:',e=t.contentWindow.document,e.open(),e.write(i+'script'+s+'document.F=Object'+i+'/script'+s),e.close(),c=e.F;o--;)delete c[l][a[o]];return c()};e.exports=Object.create||function(e,t){var n;return null===e?n=c():(r[l]=o(e),n=new r,r[l]=null,n[s]=e),void 0===t?n:i(n,t)}},function(e,t,n){var o=n(22),a=n(8),s=n(15);e.exports=n(5)?Object.defineProperties:function(e,t){a(e);for(var n,r=s(t),l=r.length,c=0;l>c;)o.f(e,n=r[c++],t[n]);return e}},function(e,t,n){var o=n(4).document;e.exports=o&&o.documentElement},function(e,t){'use strict';t.a={isClosable:!0,reorderEnabled:!0,title:''}},function(e,t,n){'use strict';var o=n(7);t.a=class{constructor(e,t,n){this._isVertical=e,this._size=t,this._grabSize=n<t?t:n,this.element=this._createElement(),this._dragListener=new o.a(this.element)}on(e,t,n){this._dragListener.on(e,t,n)}_$destroy(){this.element.remove()}_createElement(){var e=$('<div class=\"lm_drag_handle\"></div>'),t=$('<div class=\"lm_splitter\"></div>');t.append(e);var n=this._grabSize-this._size,o=n/2;return this._isVertical?(e.css('top',-o),e.css('height',this._size+n),t.addClass('lm_vertical'),t.height(this._size)):(e.css('left',-o),e.css('width',this._size+n),t.addClass('lm_horizontal'),t.width(this._size)),t}}},function(e,t,n){e.exports={default:n(69),__esModule:!0}},function(e,t,n){var o=n(2),i=o.JSON||(o.JSON={stringify:JSON.stringify});e.exports=function(){return i.stringify.apply(i,arguments)}},function(e,t,n){'use strict';var o=n(7),i=n(30),a=n(0);t.a=class{constructor(e,t,n){this._element=e,this._itemConfig=t,this._layoutManager=n,this._dragListener=null,this._createDragListener()}_createDragListener(){null!==this._dragListener&&this._dragListener.destroy(),this._dragListener=new o.a(this._element),this._dragListener.on('dragStart',this._onDragStart,this),this._dragListener.on('dragStop',this._createDragListener,this)}_onDragStart(e,t){var n=this._itemConfig;Object(a.h)(n)&&(n=n());var o=this._layoutManager._$normalizeContentItem($.extend(!0,{},n)),s=new i.a(e,t,this._dragListener,this._layoutManager,o,null);this._layoutManager.transitionIndicator.transitionElements(this._element,s.element)}}},function(e,t){'use strict';t.a=class{constructor(){this.element=$('<div class=\"lm_dropTargetIndicator\"><div class=\"lm_inner\"></div></div>'),$(document.body).append(this.element)}destroy(){this.element.remove()}highlight(e,t,n,o){this.highlightArea({x1:e,y1:t,x2:n,y2:o})}highlightArea(e){this.element.css({left:e.x1,top:e.y1,width:e.x2-e.x1,height:e.y2-e.y1}).show()}hide(){this.element.hide()}}},function(e,t,n){'use strict';var o=n(0);t.a=class{constructor(){this._element=$('<div class=\"lm_transition_indicator\"></div>'),$(document.body).append(this._element),this._toElement=null,this._fromDimensions=null,this._totalAnimationDuration=200,this._animationStartTime=null}destroy(){this._element.remove()}transitionElements(){}_nextAnimationFrame(){var e,t=this._measure(this._toElement),n=(Object(o.i)()-this._animationStartTime)/this._totalAnimationDuration,i={};if(1<=n)return void this._element.hide();for(e in t.opacity=0,this._fromDimensions)i[e]=this._fromDimensions[e]+(t[e]-this._fromDimensions[e])*n;this._element.css(i),Object(o.a)(Object(o.c)(this._nextAnimationFrame,this))}_measure(e){var t=e.offset();return{left:t.left,top:t.top,width:e.outerWidth(),height:e.outerHeight()}}}},function(e,t){'use strict';t.a={openPopouts:[],settings:{hasHeaders:!0,constrainDragToContainer:!0,reorderEnabled:!0,selectionEnabled:!1,popoutWholeStack:!1,blockedPopoutsThrowError:!0,closePopoutsOnUnload:!0,showPopoutIcon:!0,showMaximiseIcon:!0,showCloseIcon:!0,responsiveMode:'onload',tabOverlapAllowance:0,reorderOnTabMenuClick:!0,tabControlOffset:10},dimensions:{borderWidth:5,borderGrabWidth:15,minItemHeight:10,minItemWidth:10,headerHeight:20,dragProxyWidth:300,dragProxyHeight:200},labels:{close:'close',maximise:'maximise',minimise:'minimise',popout:'open in new window',popin:'pop in',tabDropdown:'additional tabs'}}},function(e,t,n){n(75)(n(76))},function(e){e.exports=function(e){function t(e){'undefined'!=typeof console&&(console.error||console.log)('[Script Loader]',e)}function n(){return'undefined'!=typeof attachEvent&&'undefined'==typeof addEventListener}try{'undefined'!=typeof execScript&&n()?execScript(e):'undefined'==typeof eval?t('EvalError: No eval function available'):eval.call(null,e)}catch(e){t(e)}}},function(e){e.exports='/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\\n(function(global, factory) {\\n if (typeof define === \\'function\\' && define.amd)\\n define(function() { return factory(global) })\\n else\\n factory(global)\\n}(this, function(window) {\\n var Zepto = (function() {\\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\\n document = window.document,\\n elementDisplay = {}, classCache = {},\\n cssNumber = { \\'column-count\\': 1, \\'columns\\': 1, \\'font-weight\\': 1, \\'line-height\\': 1,\\'opacity\\': 1, \\'z-index\\': 1, \\'zoom\\': 1 },\\n fragmentRE = /^\\\\s*<(\\\\w+|!)[^>]*>/,\\n singleTagRE = /^<(\\\\w+)\\\\s*\\\\/?>(?:<\\\\/\\\\1>|)$/,\\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\\\w:]+)[^>]*)\\\\/>/ig,\\n rootNodeRE = /^(?:body|html)$/i,\\n capitalRE = /([A-Z])/g,\\n\\n // special attributes that should be get/set via method calls\\n methodAttributes = [\\'val\\', \\'css\\', \\'html\\', \\'text\\', \\'data\\', \\'width\\', \\'height\\', \\'offset\\'],\\n\\n adjacencyOperators = [ \\'after\\', \\'prepend\\', \\'before\\', \\'append\\' ],\\n table = document.createElement(\\'table\\'),\\n tableRow = document.createElement(\\'tr\\'),\\n containers = {\\n \\'tr\\': document.createElement(\\'tbody\\'),\\n \\'tbody\\': table, \\'thead\\': table, \\'tfoot\\': table,\\n \\'td\\': tableRow, \\'th\\': tableRow,\\n \\'*\\': document.createElement(\\'div\\')\\n },\\n readyRE = /complete|loaded|interactive/,\\n simpleSelectorRE = /^[\\\\w-]*$/,\\n class2type = {},\\n toString = class2type.toString,\\n zepto = {},\\n camelize, uniq,\\n tempParent = document.createElement(\\'div\\'),\\n propMap = {\\n \\'tabindex\\': \\'tabIndex\\',\\n \\'readonly\\': \\'readOnly\\',\\n \\'for\\': \\'htmlFor\\',\\n \\'class\\': \\'className\\',\\n \\'maxlength\\': \\'maxLength\\',\\n \\'cellspacing\\': \\'cellSpacing\\',\\n \\'cellpadding\\': \\'cellPadding\\',\\n \\'rowspan\\': \\'rowSpan\\',\\n \\'colspan\\': \\'colSpan\\',\\n \\'usemap\\': \\'useMap\\',\\n \\'frameborder\\': \\'frameBorder\\',\\n \\'contenteditable\\': \\'contentEditable\\'\\n },\\n isArray = Array.isArray ||\\n function(object){ return object instanceof Array }\\n\\n zepto.matches = function(element, selector) {\\n if (!selector || !element || element.nodeType !== 1) return false\\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\\n element.mozMatchesSelector || element.oMatchesSelector ||\\n element.matchesSelector\\n if (matchesSelector) return matchesSelector.call(element, selector)\\n // fall back to performing a selector:\\n var match, parent = element.parentNode, temp = !parent\\n if (temp) (parent = tempParent).appendChild(element)\\n match = ~zepto.qsa(parent, selector).indexOf(element)\\n temp && tempParent.removeChild(element)\\n return match\\n }\\n\\n function type(obj) {\\n return obj == null ? String(obj) :\\n class2type[toString.call(obj)] || \"object\"\\n }\\n\\n function isFunction(value) { return type(value) == \"function\" }\\n function isWindow(obj) { return obj != null && obj == obj.window }\\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\\n function isObject(obj) { return type(obj) == \"object\" }\\n function isPlainObject(obj) {\\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\\n }\\n\\n function likeArray(obj) {\\n var length = !!obj && \\'length\\' in obj && obj.length,\\n type = $.type(obj)\\n\\n return \\'function\\' != type && !isWindow(obj) && (\\n \\'array\\' == type || length === 0 ||\\n (typeof length == \\'number\\' && length > 0 && (length - 1) in obj)\\n )\\n }\\n\\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : \\'\\' }) }\\n function dasherize(str) {\\n return str.replace(/::/g, \\'/\\')\\n .replace(/([A-Z]+)([A-Z][a-z])/g, \\'$1_$2\\')\\n .replace(/([a-z\\\\d])([A-Z])/g, \\'$1_$2\\')\\n .replace(/_/g, \\'-\\')\\n .toLowerCase()\\n }\\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\\n\\n function classRE(name) {\\n return name in classCache ?\\n classCache[name] : (classCache[name] = new RegExp(\\'(^|\\\\\\\\s)\\' + name + \\'(\\\\\\\\s|$)\\'))\\n }\\n\\n function maybeAddPx(name, value) {\\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\\n }\\n\\n function defaultDisplay(nodeName) {\\n var element, display\\n if (!elementDisplay[nodeName]) {\\n element = document.createElement(nodeName)\\n document.body.appendChild(element)\\n display = getComputedStyle(element, \\'\\').getPropertyValue(\"display\")\\n element.parentNode.removeChild(element)\\n display == \"none\" && (display = \"block\")\\n elementDisplay[nodeName] = display\\n }\\n return elementDisplay[nodeName]\\n }\\n\\n function children(element) {\\n return \\'children\\' in element ?\\n slice.call(element.children) :\\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\\n }\\n\\n function Z(dom, selector) {\\n var i, len = dom ? dom.length : 0\\n for (i = 0; i < len; i++) this[i] = dom[i]\\n this.length = len\\n this.selector = selector || \\'\\'\\n }\\n\\n // `$.zepto.fragment` takes a html string and an optional tag name\\n // to generate DOM nodes from the given html string.\\n // The generated DOM nodes are returned as an array.\\n // This function can be overridden in plugins for example to make\\n // it compatible with browsers that don\\'t support the DOM fully.\\n zepto.fragment = function(html, name, properties) {\\n var dom, nodes, container\\n\\n // A special case optimization for a single tag\\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\\n\\n if (!dom) {\\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\\n if (!(name in containers)) name = \\'*\\'\\n\\n container = containers[name]\\n container.innerHTML = \\'\\' + html\\n dom = $.each(slice.call(container.childNodes), function(){\\n container.removeChild(this)\\n })\\n }\\n\\n if (isPlainObject(properties)) {\\n nodes = $(dom)\\n $.each(properties, function(key, value) {\\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\\n else nodes.attr(key, value)\\n })\\n }\\n\\n return dom\\n }\\n\\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\\n // of nodes with `$.fn` and thus supplying all the Zepto functions\\n // to the array. This method can be overridden in plugins.\\n zepto.Z = function(dom, selector) {\\n return new Z(dom, selector)\\n }\\n\\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\\n // collection. This method can be overridden in plugins.\\n zepto.isZ = function(object) {\\n return object instanceof zepto.Z\\n }\\n\\n // `$.zepto.init` is Zepto\\'s counterpart to jQuery\\'s `$.fn.init` and\\n // takes a CSS selector and an optional context (and handles various\\n // special cases).\\n // This method can be overridden in plugins.\\n zepto.init = function(selector, context) {\\n var dom\\n // If nothing given, return an empty Zepto collection\\n if (!selector) return zepto.Z()\\n // Optimize for string selectors\\n else if (typeof selector == \\'string\\') {\\n selector = selector.trim()\\n // If it\\'s a html fragment, create nodes from it\\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\\n // is thrown if the fragment doesn\\'t begin with <\\n if (selector[0] == \\'<\\' && fragmentRE.test(selector))\\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\\n // If there\\'s a context, create a collection on that context first, and select\\n // nodes from there\\n else if (context !== undefined) return $(context).find(selector)\\n // If it\\'s a CSS selector, use it to select nodes.\\n else dom = zepto.qsa(document, selector)\\n }\\n // If a function is given, call it when the DOM is ready\\n else if (isFunction(selector)) return $(document).ready(selector)\\n // If a Zepto collection is given, just return it\\n else if (zepto.isZ(selector)) return selector\\n else {\\n // normalize array if an array of nodes is given\\n if (isArray(selector)) dom = compact(selector)\\n // Wrap DOM nodes.\\n else if (isObject(selector))\\n dom = [selector], selector = null\\n // If it\\'s a html fragment, create nodes from it\\n else if (fragmentRE.test(selector))\\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\\n // If there\\'s a context, create a collection on that context first, and select\\n // nodes from there\\n else if (context !== undefined) return $(context).find(selector)\\n // And last but no least, if it\\'s a CSS selector, use it to select nodes.\\n else dom = zepto.qsa(document, selector)\\n }\\n // create a new Zepto collection from the nodes found\\n return zepto.Z(dom, selector)\\n }\\n\\n // `$` will be the base `Zepto` object. When calling this\\n // function just call `$.zepto.init, which makes the implementation\\n // details of selecting nodes and creating Zepto collections\\n // patchable in plugins.\\n $ = function(selector, context){\\n return zepto.init(selector, context)\\n }\\n\\n function extend(target, source, deep) {\\n for (key in source)\\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\\n target[key] = {}\\n if (isArray(source[key]) && !isArray(target[key]))\\n target[key] = []\\n extend(target[key], source[key], deep)\\n }\\n else if (source[key] !== undefined) target[key] = source[key]\\n }\\n\\n // Copy all but undefined properties from one or more\\n // objects to the `target` object.\\n $.extend = function(target){\\n var deep, args = slice.call(arguments, 1)\\n if (typeof target == \\'boolean\\') {\\n deep = target\\n target = args.shift()\\n }\\n args.forEach(function(arg){ extend(target, arg, deep) })\\n return target\\n }\\n\\n // `$.zepto.qsa` is Zepto\\'s CSS selector implementation which\\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\\n // This method can be overridden in plugins.\\n zepto.qsa = function(element, selector){\\n var found,\\n maybeID = selector[0] == \\'#\\',\\n maybeClass = !maybeID && selector[0] == \\'.\\',\\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\\n isSimple = simpleSelectorRE.test(nameOnly)\\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn\\'t have getElementById\\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\\n slice.call(\\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn\\'t have getElementsByClassName/TagName\\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it\\'s simple, it could be a class\\n element.getElementsByTagName(selector) : // Or a tag\\n element.querySelectorAll(selector) // Or it\\'s not simple, and we need to query all\\n )\\n }\\n\\n function filtered(nodes, selector) {\\n return selector == null ? $(nodes) : $(nodes).filter(selector)\\n }\\n\\n $.contains = document.documentElement.contains ?\\n function(parent, node) {\\n return parent !== node && parent.contains(node)\\n } :\\n function(parent, node) {\\n while (node && (node = node.parentNode))\\n if (node === parent) return true\\n return false\\n }\\n\\n function funcArg(context, arg, idx, payload) {\\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\\n }\\n\\n function setAttribute(node, name, value) {\\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\\n }\\n\\n // access className property while respecting SVGAnimatedString\\n function className(node, value){\\n var klass = node.className || \\'\\',\\n svg = klass && klass.baseVal !== undefined\\n\\n if (value === undefined) return svg ? klass.baseVal : klass\\n svg ? (klass.baseVal = value) : (node.className = value)\\n }\\n\\n // \"true\" => true\\n // \"false\" => false\\n // \"null\" => null\\n // \"42\" => 42\\n // \"42.5\" => 42.5\\n // \"08\" => \"08\"\\n // JSON => parse if valid\\n // String => self\\n function deserializeValue(value) {\\n try {\\n return value ?\\n value == \"true\" ||\\n ( value == \"false\" ? false :\\n value == \"null\" ? null :\\n +value + \"\" == value ? +value :\\n /^[\\\\[\\\\{]/.test(value) ? $.parseJSON(value) :\\n value )\\n : value\\n } catch(e) {\\n return value\\n }\\n }\\n\\n $.type = type\\n $.isFunction = isFunction\\n $.isWindow = isWindow\\n $.isArray = isArray\\n $.isPlainObject = isPlainObject\\n\\n $.isEmptyObject = function(obj) {\\n var name\\n for (name in obj) return false\\n return true\\n }\\n\\n $.isNumeric = function(val) {\\n var num = Number(val), type = typeof val\\n return val != null && type != \\'boolean\\' &&\\n (type != \\'string\\' || val.length) &&\\n !isNaN(num) && isFinite(num) || false\\n }\\n\\n $.inArray = function(elem, array, i){\\n return emptyArray.indexOf.call(array, elem, i)\\n }\\n\\n $.camelCase = camelize\\n $.trim = function(str) {\\n return str == null ? \"\" : String.prototype.trim.call(str)\\n }\\n\\n // plugin compatibility\\n $.uuid = 0\\n $.support = { }\\n $.expr = { }\\n $.noop = function() {}\\n\\n $.map = function(elements, callback){\\n var value, values = [], i, key\\n if (likeArray(elements))\\n for (i = 0; i < elements.length; i++) {\\n value = callback(elements[i], i)\\n if (value != null) values.push(value)\\n }\\n else\\n for (key in elements) {\\n value = callback(elements[key], key)\\n if (value != null) values.push(value)\\n }\\n return flatten(values)\\n }\\n\\n $.each = function(elements, callback){\\n var i, key\\n if (likeArray(elements)) {\\n for (i = 0; i < elements.length; i++)\\n if (callback.call(elements[i], i, elements[i]) === false) return elements\\n } else {\\n for (key in elements)\\n if (callback.call(elements[key], key, elements[key]) === false) return elements\\n }\\n\\n return elements\\n }\\n\\n $.grep = function(elements, callback){\\n return filter.call(elements, callback)\\n }\\n\\n if (window.JSON) $.parseJSON = JSON.parse\\n\\n // Populate the class2type map\\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\\n })\\n\\n // Define methods that will be available on all\\n // Zepto collections\\n $.fn = {\\n constructor: zepto.Z,\\n length: 0,\\n\\n // Because a collection acts like an array\\n // copy over these useful array functions.\\n forEach: emptyArray.forEach,\\n reduce: emptyArray.reduce,\\n push: emptyArray.push,\\n sort: emptyArray.sort,\\n splice: emptyArray.splice,\\n indexOf: emptyArray.indexOf,\\n concat: function(){\\n var i, value, args = []\\n for (i = 0; i < arguments.length; i++) {\\n value = arguments[i]\\n args[i] = zepto.isZ(value) ? value.toArray() : value\\n }\\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\\n },\\n\\n // `map` and `slice` in the jQuery API work differently\\n // from their array counterparts\\n map: function(fn){\\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\\n },\\n slice: function(){\\n return $(slice.apply(this, arguments))\\n },\\n\\n ready: function(callback){\\n // need to check if document.body exists for IE as that browser reports\\n // document ready when it hasn\\'t yet created the body element\\n if (readyRE.test(document.readyState) && document.body) callback($)\\n else document.addEventListener(\\'DOMContentLoaded\\', function(){ callback($) }, false)\\n return this\\n },\\n get: function(idx){\\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\\n },\\n toArray: function(){ return this.get() },\\n size: function(){\\n return this.length\\n },\\n remove: function(){\\n return this.each(function(){\\n if (this.parentNode != null)\\n this.parentNode.removeChild(this)\\n })\\n },\\n each: function(callback){\\n emptyArray.every.call(this, function(el, idx){\\n return callback.call(el, idx, el) !== false\\n })\\n return this\\n },\\n filter: function(selector){\\n if (isFunction(selector)) return this.not(this.not(selector))\\n return $(filter.call(this, function(element){\\n return zepto.matches(element, selector)\\n }))\\n },\\n add: function(selector,context){\\n return $(uniq(this.concat($(selector,context))))\\n },\\n is: function(selector){\\n return this.length > 0 && zepto.matches(this[0], selector)\\n },\\n not: function(selector){\\n var nodes=[]\\n if (isFunction(selector) && selector.call !== undefined)\\n this.each(function(idx){\\n if (!selector.call(this,idx)) nodes.push(this)\\n })\\n else {\\n var excludes = typeof selector == \\'string\\' ? this.filter(selector) :\\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\\n this.forEach(function(el){\\n if (excludes.indexOf(el) < 0) nodes.push(el)\\n })\\n }\\n return $(nodes)\\n },\\n has: function(selector){\\n return this.filter(function(){\\n return isObject(selector) ?\\n $.contains(this, selector) :\\n $(this).find(selector).size()\\n })\\n },\\n eq: function(idx){\\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\\n },\\n first: function(){\\n var el = this[0]\\n return el && !isObject(el) ? el : $(el)\\n },\\n last: function(){\\n var el = this[this.length - 1]\\n return el && !isObject(el) ? el : $(el)\\n },\\n find: function(selector){\\n var result, $this = this\\n if (!selector) result = $()\\n else if (typeof selector == \\'object\\')\\n result = $(selector).filter(function(){\\n var node = this\\n return emptyArray.some.call($this, function(parent){\\n return $.contains(parent, node)\\n })\\n })\\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\\n else result = this.map(function(){ return zepto.qsa(this, selector) })\\n return result\\n },\\n closest: function(selector, context){\\n var nodes = [], collection = typeof selector == \\'object\\' && $(selector)\\n this.each(function(_, node){\\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\\n node = node !== context && !isDocument(node) && node.parentNode\\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\\n })\\n return $(nodes)\\n },\\n parents: function(selector){\\n var ancestors = [], nodes = this\\n while (nodes.length > 0)\\n nodes = $.map(nodes, function(node){\\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\\n ancestors.push(node)\\n return node\\n }\\n })\\n return filtered(ancestors, selector)\\n },\\n parent: function(selector){\\n return filtered(uniq(this.pluck(\\'parentNode\\')), selector)\\n },\\n children: function(selector){\\n return filtered(this.map(function(){ return children(this) }), selector)\\n },\\n contents: function() {\\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\\n },\\n siblings: function(selector){\\n return filtered(this.map(function(i, el){\\n return filter.call(children(el.parentNode), function(child){ return child!==el })\\n }), selector)\\n },\\n empty: function(){\\n return this.each(function(){ this.innerHTML = \\'\\' })\\n },\\n // `pluck` is borrowed from Prototype.js\\n pluck: function(property){\\n return $.map(this, function(el){ return el[property] })\\n },\\n show: function(){\\n return this.each(function(){\\n this.style.display == \"none\" && (this.style.display = \\'\\')\\n if (getComputedStyle(this, \\'\\').getPropertyValue(\"display\") == \"none\")\\n this.style.display = defaultDisplay(this.nodeName)\\n })\\n },\\n replaceWith: function(newContent){\\n return this.before(newContent).remove()\\n },\\n wrap: function(structure){\\n var func = isFunction(structure)\\n if (this[0] && !func)\\n var dom = $(structure).get(0),\\n clone = dom.parentNode || this.length > 1\\n\\n return this.each(function(index){\\n $(this).wrapAll(\\n func ? structure.call(this, index) :\\n clone ? dom.cloneNode(true) : dom\\n )\\n })\\n },\\n wrapAll: function(structure){\\n if (this[0]) {\\n $(this[0]).before(structure = $(structure))\\n var children\\n // drill down to the inmost element\\n while ((children = structure.children()).length) structure = children.first()\\n $(structure).append(this)\\n }\\n return this\\n },\\n wrapInner: function(structure){\\n var func = isFunction(structure)\\n return this.each(function(index){\\n var self = $(this), contents = self.contents(),\\n dom = func ? structure.call(this, index) : structure\\n contents.length ? contents.wrapAll(dom) : self.append(dom)\\n })\\n },\\n unwrap: function(){\\n this.parent().each(function(){\\n $(this).replaceWith($(this).children())\\n })\\n return this\\n },\\n clone: function(){\\n return this.map(function(){ return this.cloneNode(true) })\\n },\\n hide: function(){\\n return this.css(\"display\", \"none\")\\n },\\n toggle: function(setting){\\n return this.each(function(){\\n var el = $(this)\\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\\n })\\n },\\n prev: function(selector){ return $(this.pluck(\\'previousElementSibling\\')).filter(selector || \\'*\\') },\\n next: function(selector){ return $(this.pluck(\\'nextElementSibling\\')).filter(selector || \\'*\\') },\\n html: function(html){\\n return 0 in arguments ?\\n this.each(function(idx){\\n var originHtml = this.innerHTML\\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\\n }) :\\n (0 in this ? this[0].innerHTML : null)\\n },\\n text: function(text){\\n return 0 in arguments ?\\n this.each(function(idx){\\n var newText = funcArg(this, text, idx, this.textContent)\\n this.textContent = newText == null ? \\'\\' : \\'\\'+newText\\n }) :\\n (0 in this ? this.pluck(\\'textContent\\').join(\"\") : null)\\n },\\n attr: function(name, value){\\n var result\\n return (typeof name == \\'string\\' && !(1 in arguments)) ?\\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\\n this.each(function(idx){\\n if (this.nodeType !== 1) return\\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\\n })\\n },\\n removeAttr: function(name){\\n return this.each(function(){ this.nodeType === 1 && name.split(\\' \\').forEach(function(attribute){\\n setAttribute(this, attribute)\\n }, this)})\\n },\\n prop: function(name, value){\\n name = propMap[name] || name\\n return (1 in arguments) ?\\n this.each(function(idx){\\n this[name] = funcArg(this, value, idx, this[name])\\n }) :\\n (this[0] && this[0][name])\\n },\\n removeProp: function(name){\\n name = propMap[name] || name\\n return this.each(function(){ delete this[name] })\\n },\\n data: function(name, value){\\n var attrName = \\'data-\\' + name.replace(capitalRE, \\'-$1\\').toLowerCase()\\n\\n var data = (1 in arguments) ?\\n this.attr(attrName, value) :\\n this.attr(attrName)\\n\\n return data !== null ? deserializeValue(data) : undefined\\n },\\n val: function(value){\\n if (0 in arguments) {\\n if (value == null) value = \"\"\\n return this.each(function(idx){\\n this.value = funcArg(this, value, idx, this.value)\\n })\\n } else {\\n return this[0] && (this[0].multiple ?\\n $(this[0]).find(\\'option\\').filter(function(){ return this.selected }).pluck(\\'value\\') :\\n this[0].value)\\n }\\n },\\n offset: function(coordinates){\\n if (coordinates) return this.each(function(index){\\n var $this = $(this),\\n coords = funcArg(this, coordinates, index, $this.offset()),\\n parentOffset = $this.offsetParent().offset(),\\n props = {\\n top: coords.top - parentOffset.top,\\n left: coords.left - parentOffset.left\\n }\\n\\n if ($this.css(\\'position\\') == \\'static\\') props[\\'position\\'] = \\'relative\\'\\n $this.css(props)\\n })\\n if (!this.length) return null\\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\\n return {top: 0, left: 0}\\n var obj = this[0].getBoundingClientRect()\\n return {\\n left: obj.left + window.pageXOffset,\\n top: obj.top + window.pageYOffset,\\n width: Math.round(obj.width),\\n height: Math.round(obj.height)\\n }\\n },\\n css: function(property, value){\\n if (arguments.length < 2) {\\n var element = this[0]\\n if (typeof property == \\'string\\') {\\n if (!element) return\\n return element.style[camelize(property)] || getComputedStyle(element, \\'\\').getPropertyValue(property)\\n } else if (isArray(property)) {\\n if (!element) return\\n var props = {}\\n var computedStyle = getComputedStyle(element, \\'\\')\\n $.each(property, function(_, prop){\\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\\n })\\n return props\\n }\\n }\\n\\n var css = \\'\\'\\n if (type(property) == \\'string\\') {\\n if (!value && value !== 0)\\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\\n else\\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\\n } else {\\n for (key in property)\\n if (!property[key] && property[key] !== 0)\\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\\n else\\n css += dasherize(key) + \\':\\' + maybeAddPx(key, property[key]) + \\';\\'\\n }\\n\\n return this.each(function(){ this.style.cssText += \\';\\' + css })\\n },\\n index: function(element){\\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\\n },\\n hasClass: function(name){\\n if (!name) return false\\n return emptyArray.some.call(this, function(el){\\n return this.test(className(el))\\n }, classRE(name))\\n },\\n addClass: function(name){\\n if (!name) return this\\n return this.each(function(idx){\\n if (!(\\'className\\' in this)) return\\n classList = []\\n var cls = className(this), newName = funcArg(this, name, idx, cls)\\n newName.split(/\\\\s+/g).forEach(function(klass){\\n if (!$(this).hasClass(klass)) classList.push(klass)\\n }, this)\\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\\n })\\n },\\n removeClass: function(name){\\n return this.each(function(idx){\\n if (!(\\'className\\' in this)) return\\n if (name === undefined) return className(this, \\'\\')\\n classList = className(this)\\n funcArg(this, name, idx, classList).split(/\\\\s+/g).forEach(function(klass){\\n classList = classList.replace(classRE(klass), \" \")\\n })\\n className(this, classList.trim())\\n })\\n },\\n toggleClass: function(name, when){\\n if (!name) return this\\n return this.each(function(idx){\\n var $this = $(this), names = funcArg(this, name, idx, className(this))\\n names.split(/\\\\s+/g).forEach(function(klass){\\n (when === undefined ? !$this.hasClass(klass) : when) ?\\n $this.addClass(klass) : $this.removeClass(klass)\\n })\\n })\\n },\\n scrollTop: function(value){\\n if (!this.length) return\\n var hasScrollTop = \\'scrollTop\\' in this[0]\\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\\n return this.each(hasScrollTop ?\\n function(){ this.scrollTop = value } :\\n function(){ this.scrollTo(this.scrollX, value) })\\n },\\n scrollLeft: function(value){\\n if (!this.length) return\\n var hasScrollLeft = \\'scrollLeft\\' in this[0]\\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\\n return this.each(hasScrollLeft ?\\n function(){ this.scrollLeft = value } :\\n function(){ this.scrollTo(value, this.scrollY) })\\n },\\n position: function() {\\n if (!this.length) return\\n\\n var elem = this[0],\\n // Get *real* offsetParent\\n offsetParent = this.offsetParent(),\\n // Get correct offsets\\n offset = this.offset(),\\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\\n\\n // Subtract element margins\\n // note: when an element has margin: auto the offsetLeft and marginLeft\\n // are the same in Safari causing offset.left to incorrectly be 0\\n offset.top -= parseFloat( $(elem).css(\\'margin-top\\') ) || 0\\n offset.left -= parseFloat( $(elem).css(\\'margin-left\\') ) || 0\\n\\n // Add offsetParent borders\\n parentOffset.top += parseFloat( $(offsetParent[0]).css(\\'border-top-width\\') ) || 0\\n parentOffset.left += parseFloat( $(offsetParent[0]).css(\\'border-left-width\\') ) || 0\\n\\n // Subtract the two offsets\\n return {\\n top: offset.top - parentOffset.top,\\n left: offset.left - parentOffset.left\\n }\\n },\\n offsetParent: function() {\\n return this.map(function(){\\n var parent = this.offsetParent || document.body\\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\\n parent = parent.offsetParent\\n return parent\\n })\\n }\\n }\\n\\n // for now\\n $.fn.detach = $.fn.remove\\n\\n // Generate the `width` and `height` functions\\n ;[\\'width\\', \\'height\\'].forEach(function(dimension){\\n var dimensionProperty =\\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\\n\\n $.fn[dimension] = function(value){\\n var offset, el = this[0]\\n if (value === undefined) return isWindow(el) ? el[\\'inner\\' + dimensionProperty] :\\n isDocument(el) ? el.documentElement[\\'scroll\\' + dimensionProperty] :\\n (offset = this.offset()) && offset[dimension]\\n else return this.each(function(idx){\\n el = $(this)\\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\\n })\\n }\\n })\\n\\n function traverseNode(node, fun) {\\n fun(node)\\n for (var i = 0, len = node.childNodes.length; i < len; i++)\\n traverseNode(node.childNodes[i], fun)\\n }\\n\\n // Generate the `after`, `prepend`, `before`, `append`,\\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\\n adjacencyOperators.forEach(function(operator, operatorIndex) {\\n var inside = operatorIndex % 2 //=> prepend, append\\n\\n $.fn[operator] = function(){\\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\\n var argType, nodes = $.map(arguments, function(arg) {\\n var arr = []\\n argType = type(arg)\\n if (argType == \"array\") {\\n arg.forEach(function(el) {\\n if (el.nodeType !== undefined) return arr.push(el)\\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\\n arr = arr.concat(zepto.fragment(el))\\n })\\n return arr\\n }\\n return argType == \"object\" || arg == null ?\\n arg : zepto.fragment(arg)\\n }),\\n parent, copyByClone = this.length > 1\\n if (nodes.length < 1) return this\\n\\n return this.each(function(_, target){\\n parent = inside ? target : target.parentNode\\n\\n // convert all methods to a \"before\" operation\\n target = operatorIndex == 0 ? target.nextSibling :\\n operatorIndex == 1 ? target.firstChild :\\n operatorIndex == 2 ? target :\\n null\\n\\n var parentInDocument = $.contains(document.documentElement, parent)\\n\\n nodes.forEach(function(node){\\n if (copyByClone) node = node.cloneNode(true)\\n else if (!parent) return $(node).remove()\\n\\n parent.insertBefore(node, target)\\n if (parentInDocument) traverseNode(node, function(el){\\n if (el.nodeName != null && el.nodeName.toUpperCase() === \\'SCRIPT\\' &&\\n (!el.type || el.type === \\'text/javascript\\') && !el.src){\\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\\n target[\\'eval\\'].call(target, el.innerHTML)\\n }\\n })\\n })\\n })\\n }\\n\\n // after => insertAfter\\n // prepend => prependTo\\n // before => insertBefore\\n // append => appendTo\\n $.fn[inside ? operator+\\'To\\' : \\'insert\\'+(operatorIndex ? \\'Before\\' : \\'After\\')] = function(html){\\n $(html)[operator](this)\\n return this\\n }\\n })\\n\\n zepto.Z.prototype = Z.prototype = $.fn\\n\\n // Export internal API functions in the `$.zepto` namespace\\n zepto.uniq = uniq\\n zepto.deserializeValue = deserializeValue\\n $.zepto = zepto\\n\\n return $\\n})()\\n\\nwindow.Zepto = Zepto\\nwindow.$ === undefined && (window.$ = Zepto)\\n\\n;(function($){\\n var _zid = 1, undefined,\\n slice = Array.prototype.slice,\\n isFunction = $.isFunction,\\n isString = function(obj){ return typeof obj == \\'string\\' },\\n handlers = {},\\n specialEvents={},\\n focusinSupported = \\'onfocusin\\' in window,\\n focus = { focus: \\'focusin\\', blur: \\'focusout\\' },\\n hover = { mouseenter: \\'mouseover\\', mouseleave: \\'mouseout\\' }\\n\\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = \\'MouseEvents\\'\\n\\n function zid(element) {\\n return element._zid || (element._zid = _zid++)\\n }\\n function findHandlers(element, event, fn, selector) {\\n event = parse(event)\\n if (event.ns) var matcher = matcherFor(event.ns)\\n return (handlers[zid(element)] || []).filter(function(handler) {\\n return handler\\n && (!event.e || handler.e == event.e)\\n && (!event.ns || matcher.test(handler.ns))\\n && (!fn || zid(handler.fn) === zid(fn))\\n && (!selector || handler.sel == selector)\\n })\\n }\\n function parse(event) {\\n var parts = (\\'\\' + event).split(\\'.\\')\\n return {e: parts[0], ns: parts.slice(1).sort().join(\\' \\')}\\n }\\n function matcherFor(ns) {\\n return new RegExp(\\'(?:^| )\\' + ns.replace(\\' \\', \\' .* ?\\') + \\'(?: |$)\\')\\n }\\n\\n function eventCapture(handler, captureSetting) {\\n return handler.del &&\\n (!focusinSupported && (handler.e in focus)) ||\\n !!captureSetting\\n }\\n\\n function realEvent(type) {\\n return hover[type] || (focusinSupported && focus[type]) || type\\n }\\n\\n function add(element, events, fn, data, selector, delegator, capture){\\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\\n events.split(/\\\\s/).forEach(function(event){\\n if (event == \\'ready\\') return $(document).ready(fn)\\n var handler = parse(event)\\n handler.fn = fn\\n handler.sel = selector\\n // emulate mouseenter, mouseleave\\n if (handler.e in hover) fn = function(e){\\n var related = e.relatedTarget\\n if (!related || (related !== this && !$.contains(this, related)))\\n return handler.fn.apply(this, arguments)\\n }\\n handler.del = delegator\\n var callback = delegator || fn\\n handler.proxy = function(e){\\n e = compatible(e)\\n if (e.isImmediatePropagationStopped()) return\\n e.data = data\\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\\n if (result === false) e.preventDefault(), e.stopPropagation()\\n return result\\n }\\n handler.i = set.length\\n set.push(handler)\\n if (\\'addEventListener\\' in element)\\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\\n })\\n }\\n function remove(element, events, fn, selector, capture){\\n var id = zid(element)\\n ;(events || \\'\\').split(/\\\\s/).forEach(function(event){\\n findHandlers(element, event, fn, selector).forEach(function(handler){\\n delete handlers[id][handler.i]\\n if (\\'removeEventListener\\' in element)\\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\\n })\\n })\\n }\\n\\n $.event = { add: add, remove: remove }\\n\\n $.proxy = function(fn, context) {\\n var args = (2 in arguments) && slice.call(arguments, 2)\\n if (isFunction(fn)) {\\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\\n proxyFn._zid = zid(fn)\\n return proxyFn\\n } else if (isString(context)) {\\n if (args) {\\n args.unshift(fn[context], fn)\\n return $.proxy.apply(null, args)\\n } else {\\n return $.proxy(fn[context], fn)\\n }\\n } else {\\n throw new TypeError(\"expected function\")\\n }\\n }\\n\\n $.fn.bind = function(event, data, callback){\\n return this.on(event, data, callback)\\n }\\n $.fn.unbind = function(event, callback){\\n return this.off(event, callback)\\n }\\n $.fn.one = function(event, selector, data, callback){\\n return this.on(event, selector, data, callback, 1)\\n }\\n\\n var returnTrue = function(){return true},\\n returnFalse = function(){return false},\\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\\n eventMethods = {\\n preventDefault: \\'isDefaultPrevented\\',\\n stopImmediatePropagation: \\'isImmediatePropagationStopped\\',\\n stopPropagation: \\'isPropagationStopped\\'\\n }\\n\\n function compatible(event, source) {\\n if (source || !event.isDefaultPrevented) {\\n source || (source = event)\\n\\n $.each(eventMethods, function(name, predicate) {\\n var sourceMethod = source[name]\\n event[name] = function(){\\n this[predicate] = returnTrue\\n return sourceMethod && sourceMethod.apply(source, arguments)\\n }\\n event[predicate] = returnFalse\\n })\\n\\n event.timeStamp || (event.timeStamp = Date.now())\\n\\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\\n \\'returnValue\\' in source ? source.returnValue === false :\\n source.getPreventDefault && source.getPreventDefault())\\n event.isDefaultPrevented = returnTrue\\n }\\n return event\\n }\\n\\n function createProxy(event) {\\n var key, proxy = { originalEvent: event }\\n for (key in event)\\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\\n\\n return compatible(proxy, event)\\n }\\n\\n $.fn.delegate = function(selector, event, callback){\\n return this.on(event, selector, callback)\\n }\\n $.fn.undelegate = function(selector, event, callback){\\n return this.off(event, selector, callback)\\n }\\n\\n $.fn.live = function(event, callback){\\n $(document.body).delegate(this.selector, event, callback)\\n return this\\n }\\n $.fn.die = function(event, callback){\\n $(document.body).undelegate(this.selector, event, callback)\\n return this\\n }\\n\\n $.fn.on = function(event, selector, data, callback, one){\\n var autoRemove, delegator, $this = this\\n if (event && !isString(event)) {\\n $.each(event, function(type, fn){\\n $this.on(type, selector, data, fn, one)\\n })\\n return $this\\n }\\n\\n if (!isString(selector) && !isFunction(callback) && callback !== false)\\n callback = data, data = selector, selector = undefined\\n if (callback === undefined || data === false)\\n callback = data, data = undefined\\n\\n if (callback === false) callback = returnFalse\\n\\n return $this.each(function(_, element){\\n if (one) autoRemove = function(e){\\n remove(element, e.type, callback)\\n return callback.apply(this, arguments)\\n }\\n\\n if (selector) delegator = function(e){\\n var evt, match = $(e.target).closest(selector, element).get(0)\\n if (match && match !== element) {\\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\\n }\\n }\\n\\n add(element, event, callback, data, selector, delegator || autoRemove)\\n })\\n }\\n $.fn.off = function(event, selector, callback){\\n var $this = this\\n if (event && !isString(event)) {\\n $.each(event, function(type, fn){\\n $this.off(type, selector, fn)\\n })\\n return $this\\n }\\n\\n if (!isString(selector) && !isFunction(callback) && callback !== false)\\n callback = selector, selector = undefined\\n\\n if (callback === false) callback = returnFalse\\n\\n return $this.each(function(){\\n remove(this, event, callback, selector)\\n })\\n }\\n\\n $.fn.trigger = function(event, args){\\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\\n event._args = args\\n return this.each(function(){\\n // handle focus(), blur() by calling them directly\\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\\n // items in the collection might not be DOM elements\\n else if (\\'dispatchEvent\\' in this) this.dispatchEvent(event)\\n else $(this).triggerHandler(event, args)\\n })\\n }\\n\\n // triggers event handlers on current element just as if an event occurred,\\n // doesn\\'t trigger an actual event, doesn\\'t bubble\\n $.fn.triggerHandler = function(event, args){\\n var e, result\\n this.each(function(i, element){\\n e = createProxy(isString(event) ? $.Event(event) : event)\\n e._args = args\\n e.target = element\\n $.each(findHandlers(element, event.type || event), function(i, handler){\\n result = handler.proxy(e)\\n if (e.isImmediatePropagationStopped()) return false\\n })\\n })\\n return result\\n }\\n\\n // shortcut methods for `.bind(event, fn)` for each event type\\n ;(\\'focusin focusout focus blur load resize scroll unload click dblclick \\'+\\n \\'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \\'+\\n \\'change select keydown keypress keyup error\\').split(\\' \\').forEach(function(event) {\\n $.fn[event] = function(callback) {\\n return (0 in arguments) ?\\n this.bind(event, callback) :\\n this.trigger(event)\\n }\\n })\\n\\n $.Event = function(type, props) {\\n if (!isString(type)) props = type, type = props.type\\n var event = document.createEvent(specialEvents[type] || \\'Events\\'), bubbles = true\\n if (props) for (var name in props) (name == \\'bubbles\\') ? (bubbles = !!props[name]) : (event[name] = props[name])\\n event.initEvent(type, bubbles, true)\\n return compatible(event)\\n }\\n\\n})(Zepto)\\n\\n;(function($){\\n var jsonpID = +new Date(),\\n document = window.document,\\n key,\\n name,\\n rscript = /<script\\\\b[^<]*(?:(?!<\\\\/script>)<[^<]*)*<\\\\/script>/gi,\\n scriptTypeRE = /^(?:text|application)\\\\/javascript/i,\\n xmlTypeRE = /^(?:text|application)\\\\/xml/i,\\n jsonType = \\'application/json\\',\\n htmlType = \\'text/html\\',\\n blankRE = /^\\\\s*$/,\\n originAnchor = document.createElement(\\'a\\')\\n\\n originAnchor.href = window.location.href\\n\\n // trigger a custom event and return false if it was cancelled\\n function triggerAndReturn(context, eventName, data) {\\n var event = $.Event(eventName)\\n $(context).trigger(event, data)\\n return !event.isDefaultPrevented()\\n }\\n\\n // trigger an Ajax \"global\" event\\n function triggerGlobal(settings, context, eventName, data) {\\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\\n }\\n\\n // Number of active Ajax requests\\n $.active = 0\\n\\n function ajaxStart(settings) {\\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, \\'ajaxStart\\')\\n }\\n function ajaxStop(settings) {\\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, \\'ajaxStop\\')\\n }\\n\\n // triggers an extra global event \"ajaxBeforeSend\" that\\'s like \"ajaxSend\" but cancelable\\n function ajaxBeforeSend(xhr, settings) {\\n var context = settings.context\\n if (settings.beforeSend.call(context, xhr, settings) === false ||\\n triggerGlobal(settings, context, \\'ajaxBeforeSend\\', [xhr, settings]) === false)\\n return false\\n\\n triggerGlobal(settings, context, \\'ajaxSend\\', [xhr, settings])\\n }\\n function ajaxSuccess(data, xhr, settings, deferred) {\\n var context = settings.context, status = \\'success\\'\\n settings.success.call(context, data, status, xhr)\\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\\n triggerGlobal(settings, context, \\'ajaxSuccess\\', [xhr, settings, data])\\n ajaxComplete(status, xhr, settings)\\n }\\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\\n function ajaxError(error, type, xhr, settings, deferred) {\\n var context = settings.context\\n settings.error.call(context, xhr, type, error)\\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\\n triggerGlobal(settings, context, \\'ajaxError\\', [xhr, settings, error || type])\\n ajaxComplete(type, xhr, settings)\\n }\\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\\n function ajaxComplete(status, xhr, settings) {\\n var context = settings.context\\n settings.complete.call(context, xhr, status)\\n triggerGlobal(settings, context, \\'ajaxComplete\\', [xhr, settings])\\n ajaxStop(settings)\\n }\\n\\n function ajaxDataFilter(data, type, settings) {\\n if (settings.dataFilter == empty) return data\\n var context = settings.context\\n return settings.dataFilter.call(context, data, type)\\n }\\n\\n // Empty function, used as default callback\\n function empty() {}\\n\\n $.ajaxJSONP = function(options, deferred){\\n if (!(\\'type\\' in options)) return $.ajax(options)\\n\\n var _callbackName = options.jsonpCallback,\\n callbackName = ($.isFunction(_callbackName) ?\\n _callbackName() : _callbackName) || (\\'Zepto\\' + (jsonpID++)),\\n script = document.createElement(\\'script\\'),\\n originalCallback = window[callbackName],\\n responseData,\\n abort = function(errorType) {\\n $(script).triggerHandler(\\'error\\', errorType || \\'abort\\')\\n },\\n xhr = { abort: abort }, abortTimeout\\n\\n if (deferred) deferred.promise(xhr)\\n\\n $(script).on(\\'load error\\', function(e, errorType){\\n clearTimeout(abortTimeout)\\n $(script).off().remove()\\n\\n if (e.type == \\'error\\' || !responseData) {\\n ajaxError(null, errorType || \\'error\\', xhr, options, deferred)\\n } else {\\n ajaxSuccess(responseData[0], xhr, options, deferred)\\n }\\n\\n window[callbackName] = originalCallback\\n if (responseData && $.isFunction(originalCallback))\\n originalCallback(responseData[0])\\n\\n originalCallback = responseData = undefined\\n })\\n\\n if (ajaxBeforeSend(xhr, options) === false) {\\n abort(\\'abort\\')\\n return xhr\\n }\\n\\n window[callbackName] = function(){\\n responseData = arguments\\n }\\n\\n script.src = options.url.replace(/\\\\?(.+)=\\\\?/, \\'?$1=\\' + callbackName)\\n document.head.appendChild(script)\\n\\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\\n abort(\\'timeout\\')\\n }, options.timeout)\\n\\n return xhr\\n }\\n\\n $.ajaxSettings = {\\n // Default type of request\\n type: \\'GET\\',\\n // Callback that is executed before request\\n beforeSend: empty,\\n // Callback that is executed if the request succeeds\\n success: empty,\\n // Callback that is executed the the server drops error\\n error: empty,\\n // Callback that is executed on request complete (both: error and success)\\n complete: empty,\\n // The context for the callbacks\\n context: null,\\n // Whether to trigger \"global\" Ajax events\\n global: true,\\n // Transport\\n xhr: function () {\\n return new window.XMLHttpRequest()\\n },\\n // MIME types mapping\\n // IIS returns Javascript as \"application/x-javascript\"\\n accepts: {\\n script: \\'text/javascript, application/javascript, application/x-javascript\\',\\n json: jsonType,\\n xml: \\'application/xml, text/xml\\',\\n html: htmlType,\\n text: \\'text/plain\\'\\n },\\n // Whether the request is to another domain\\n crossDomain: false,\\n // Default timeout\\n timeout: 0,\\n // Whether data should be serialized to string\\n processData: true,\\n // Whether the browser should be allowed to cache GET responses\\n cache: true,\\n //Used to handle the raw response data of XMLHttpRequest.\\n //This is a pre-filtering function to sanitize the response.\\n //The sanitized response should be returned\\n dataFilter: empty\\n }\\n\\n function mimeToDataType(mime) {\\n if (mime) mime = mime.split(\\';\\', 2)[0]\\n return mime && ( mime == htmlType ? \\'html\\' :\\n mime == jsonType ? \\'json\\' :\\n scriptTypeRE.test(mime) ? \\'script\\' :\\n xmlTypeRE.test(mime) && \\'xml\\' ) || \\'text\\'\\n }\\n\\n function appendQuery(url, query) {\\n if (query == \\'\\') return url\\n return (url + \\'&\\' + query).replace(/[&?]{1,2}/, \\'?\\')\\n }\\n\\n // serialize payload and append it to the URL for GET requests\\n function serializeData(options) {\\n if (options.processData && options.data && $.type(options.data) != \"string\")\\n options.data = $.param(options.data, options.traditional)\\n if (options.data && (!options.type || options.type.toUpperCase() == \\'GET\\' || \\'jsonp\\' == options.dataType))\\n options.url = appendQuery(options.url, options.data), options.data = undefined\\n }\\n\\n $.ajax = function(options){\\n var settings = $.extend({}, options || {}),\\n deferred = $.Deferred && $.Deferred(),\\n urlAnchor, hashIndex\\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\\n\\n ajaxStart(settings)\\n\\n if (!settings.crossDomain) {\\n urlAnchor = document.createElement(\\'a\\')\\n urlAnchor.href = settings.url\\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\\n urlAnchor.href = urlAnchor.href\\n settings.crossDomain = (originAnchor.protocol + \\'//\\' + originAnchor.host) !== (urlAnchor.protocol + \\'//\\' + urlAnchor.host)\\n }\\n\\n if (!settings.url) settings.url = window.location.toString()\\n if ((hashIndex = settings.url.indexOf(\\'#\\')) > -1) settings.url = settings.url.slice(0, hashIndex)\\n serializeData(settings)\\n\\n var dataType = settings.dataType, hasPlaceholder = /\\\\?.+=\\\\?/.test(settings.url)\\n if (hasPlaceholder) dataType = \\'jsonp\\'\\n\\n if (settings.cache === false || (\\n (!options || options.cache !== true) &&\\n (\\'script\\' == dataType || \\'jsonp\\' == dataType)\\n ))\\n settings.url = appendQuery(settings.url, \\'_=\\' + Date.now())\\n\\n if (\\'jsonp\\' == dataType) {\\n if (!hasPlaceholder)\\n settings.url = appendQuery(settings.url,\\n settings.jsonp ? (settings.jsonp + \\'=?\\') : settings.jsonp === false ? \\'\\' : \\'callback=?\\')\\n return $.ajaxJSONP(settings, deferred)\\n }\\n\\n var mime = settings.accepts[dataType],\\n headers = { },\\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\\n protocol = /^([\\\\w-]+:)\\\\/\\\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\\n xhr = settings.xhr(),\\n nativeSetHeader = xhr.setRequestHeader,\\n abortTimeout\\n\\n if (deferred) deferred.promise(xhr)\\n\\n if (!settings.crossDomain) setHeader(\\'X-Requested-With\\', \\'XMLHttpRequest\\')\\n setHeader(\\'Accept\\', mime || \\'*/*\\')\\n if (mime = settings.mimeType || mime) {\\n if (mime.indexOf(\\',\\') > -1) mime = mime.split(\\',\\', 2)[0]\\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\\n }\\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != \\'GET\\'))\\n setHeader(\\'Content-Type\\', settings.contentType || \\'application/x-www-form-urlencoded\\')\\n\\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\\n xhr.setRequestHeader = setHeader\\n\\n xhr.onreadystatechange = function(){\\n if (xhr.readyState == 4) {\\n xhr.onreadystatechange = empty\\n clearTimeout(abortTimeout)\\n var result, error = false\\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == \\'file:\\')) {\\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader(\\'content-type\\'))\\n\\n if (xhr.responseType == \\'arraybuffer\\' || xhr.responseType == \\'blob\\')\\n result = xhr.response\\n else {\\n result = xhr.responseText\\n\\n try {\\n // http://perfectionkills.com/global-eval-what-are-the-options/\\n // sanitize response accordingly if data filter callback provided\\n result = ajaxDataFilter(result, dataType, settings)\\n if (dataType == \\'script\\') (1,eval)(result)\\n else if (dataType == \\'xml\\') result = xhr.responseXML\\n else if (dataType == \\'json\\') result = blankRE.test(result) ? null : $.parseJSON(result)\\n } catch (e) { error = e }\\n\\n if (error) return ajaxError(error, \\'parsererror\\', xhr, settings, deferred)\\n }\\n\\n ajaxSuccess(result, xhr, settings, deferred)\\n } else {\\n ajaxError(xhr.statusText || null, xhr.status ? \\'error\\' : \\'abort\\', xhr, settings, deferred)\\n }\\n }\\n }\\n\\n if (ajaxBeforeSend(xhr, settings) === false) {\\n xhr.abort()\\n ajaxError(null, \\'abort\\', xhr, settings, deferred)\\n return xhr\\n }\\n\\n var async = \\'async\\' in settings ? settings.async : true\\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\\n\\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\\n\\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\\n\\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\\n xhr.onreadystatechange = empty\\n xhr.abort()\\n ajaxError(null, \\'timeout\\', xhr, settings, deferred)\\n }, settings.timeout)\\n\\n // avoid sending empty string (#319)\\n xhr.send(settings.data ? settings.data : null)\\n return xhr\\n }\\n\\n // handle optional data/success arguments\\n function parseArguments(url, data, success, dataType) {\\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\\n if (!$.isFunction(success)) dataType = success, success = undefined\\n return {\\n url: url\\n , data: data\\n , success: success\\n , dataType: dataType\\n }\\n }\\n\\n $.get = function(/* url, data, success, dataType */){\\n return $.ajax(parseArguments.apply(null, arguments))\\n }\\n\\n $.post = function(/* url, data, success, dataType */){\\n var options = parseArguments.apply(null, arguments)\\n options.type = \\'POST\\'\\n return $.ajax(options)\\n }\\n\\n $.getJSON = function(/* url, data, success */){\\n var options = parseArguments.apply(null, arguments)\\n options.dataType = \\'json\\'\\n return $.ajax(options)\\n }\\n\\n $.fn.load = function(url, data, success){\\n if (!this.length) return this\\n var self = this, parts = url.split(/\\\\s/), selector,\\n options = parseArguments(url, data, success),\\n callback = options.success\\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\\n options.success = function(response){\\n self.html(selector ?\\n $(\\'<div>\\').html(response.replace(rscript, \"\")).find(selector)\\n : response)\\n callback && callback.apply(self, arguments)\\n }\\n $.ajax(options)\\n return this\\n }\\n\\n var escape = encodeURIComponent\\n\\n function serialize(params, obj, traditional, scope){\\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\\n $.each(obj, function(key, value) {\\n type = $.type(value)\\n if (scope) key = traditional ? scope :\\n scope + \\'[\\' + (hash || type == \\'object\\' || type == \\'array\\' ? key : \\'\\') + \\']\\'\\n // handle data in serializeArray() format\\n if (!scope && array) params.add(value.name, value.value)\\n // recurse into nested objects\\n else if (type == \"array\" || (!traditional && type == \"object\"))\\n serialize(params, value, traditional, key)\\n else params.add(key, value)\\n })\\n }\\n\\n $.param = function(obj, traditional){\\n var params = []\\n params.add = function(key, value) {\\n if ($.isFunction(value)) value = value()\\n if (value == null) value = \"\"\\n this.push(escape(key) + \\'=\\' + escape(value))\\n }\\n serialize(params, obj, traditional)\\n return params.join(\\'&\\').replace(/%20/g, \\'+\\')\\n }\\n})(Zepto)\\n\\n;(function($){\\n $.fn.serializeArray = function() {\\n var name, type, result = [],\\n add = function(value) {\\n if (value.forEach) return value.forEach(add)\\n result.push({ name: name, value: value })\\n }\\n if (this[0]) $.each(this[0].elements, function(_, field){\\n type = field.type, name = field.name\\n if (name && field.nodeName.toLowerCase() != \\'fieldset\\' &&\\n !field.disabled && type != \\'submit\\' && type != \\'reset\\' && type != \\'button\\' && type != \\'file\\' &&\\n ((type != \\'radio\\' && type != \\'checkbox\\') || field.checked))\\n add($(field).val())\\n })\\n return result\\n }\\n\\n $.fn.serialize = function(){\\n var result = []\\n this.serializeArray().forEach(function(elm){\\n result.push(encodeURIComponent(elm.name) + \\'=\\' + encodeURIComponent(elm.value))\\n })\\n return result.join(\\'&\\')\\n }\\n\\n $.fn.submit = function(callback) {\\n if (0 in arguments) this.bind(\\'submit\\', callback)\\n else if (this.length) {\\n var event = $.Event(\\'submit\\')\\n this.eq(0).trigger(event)\\n if (!event.isDefaultPrevented()) this.get(0).submit()\\n }\\n return this\\n }\\n\\n})(Zepto)\\n\\n;(function(){\\n // getComputedStyle shouldn\\'t freak out when called\\n // without a valid element as argument\\n try {\\n getComputedStyle(undefined)\\n } catch(e) {\\n var nativeGetComputedStyle = getComputedStyle\\n window.getComputedStyle = function(element, pseudoElement){\\n try {\\n return nativeGetComputedStyle(element, pseudoElement)\\n } catch(e) {\\n return null\\n }\\n }\\n }\\n})()\\n return Zepto\\n}))\\n'},function(){(function(e){e.expr={\":\":{}},e.support={},e.fn.clone=function(){var t=e();return this.each(function(){t.push(this.cloneNode(!0))}),t},['Left','Top'].forEach(function(t,n){function o(e){return e&&'object'==typeof e&&'setInterval'in e}function i(e){return o(e)?e:!(9!==e.nodeType)&&(e.defaultView||e.parentWindow)}var a='scroll'+t;e.fn[a]=function(t){var o,s;return void 0===t?(o=this[0],!o)?null:(s=i(o),s?'pageXOffset'in s?s[n?'pageYOffset':'pageXOffset']:s.document.documentElement[a]||s.document.body[a]:o[a]):void this.each(function(){if(s=i(this),s){var o=n?e(s).scrollLeft():t,r=n?t:e(s).scrollTop();s.scrollTo(o,r)}else this[a]=t})}}),['width','height'].forEach(function(t){var n=t.replace(/./,function(e){return e[0].toUpperCase()});e.fn['inner'+n]=function(e){var n=this;if(n){var o=n[t]();return{width:['left','right'],height:['top','bottom']}[t].forEach(function(t){o+=parseInt(n.css('padding-'+t),10),e&&(o+=parseInt(n.css('margin-'+t),10))}),o}return null},e.fn['outer'+n]=function(e){var n=this;if(n){var o=n[t]();return{width:['left','right'],height:['top','bottom']}[t].forEach(function(t){e&&(o+=parseInt(n.css('margin-'+t),10))}),o}return null}}),e.proxy=function(t,n){if('string'==typeof n){var o=t[n];n=t,t=o}if(e.isFunction(t)){var i=Array.prototype.slice.call(arguments,2),a=function(){return t.apply(n,i.concat(Array.prototype.slice.call(arguments)))};return a.guid=t.guid=t.guid||a.guid||e.guid++,a}};var t=String.prototype.trim;e.trim=function(e,n){return!n&&t?t.call(e):(n=defaultToWhiteSpace(n),e.replace(new RegExp('^['+n+']+|['+n+']+$','g'),''))};var n=/^t(?:able|d|h)$/i,o=/^(?:body|html)$/i;e.fn.position=function(){if(!this[0])return null;var t=this[0],n=this.offsetParent(),i=this.offset(),a=o.test(n[0].nodeName)?{top:0,left:0}:n.offset();return i.top-=parseFloat(e(t).css('margin-top'))||0,i.left-=parseFloat(e(t).css('margin-left'))||0,a.top+=parseFloat(e(n[0]).css('border-top-width'))||0,a.left+=parseFloat(e(n[0]).css('border-left-width'))||0,{top:i.top-a.top,left:i.left-a.left}},e.fn.offsetParent=function(){var t=e();return this.each(function(){for(var n=this.offsetParent||document.body;n&&!o.test(n.nodeName)&&'static'===e(n).css('position');)n=n.offsetParent;t.push(n)}),t}})(Zepto)}])});\r\n//# sourceMappingURL=goldenlayout.js.map","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":""}
\ No newline at end of file diff --git a/webAO/ui.js b/webAO/ui.js index ca235ff..56e0dcd 100644 --- a/webAO/ui.js +++ b/webAO/ui.js @@ -21,14 +21,7 @@ var config = { componentName: "template", title: "Game", componentState: { id: "client_wrapper" } - }, - { - type: "component", - title: "Miscellaneous", - height: 5, - componentName: "template", - componentState: { id: "misc" } - }, + } ] }, { @@ -56,40 +49,23 @@ var config = { ] }, { - type: "component", - title: "Server chat", + type: "component", + title: "Music", width: 30, - componentName: "template", - componentState: { id: "ooc" } - } + componentName: "template", + componentState: { id: "music" } + } ] }, { type: "row", content: [ { - type: "component", - title: "Music", - componentName: "template", - componentState: { id: "music" } - }, - { - type: "stack", - content: [ - { - type: "component", - title: "Settings", - componentName: "template", - componentState: { id: "client_settings" } - }, - { - type: "component", - title: "About", - componentName: "template", - componentState: { id: "about" } - } - ] - } + type: "component", + title: "Server chat", + componentName: "template", + componentState: { id: "ooc" } + } ] } ] |
